UDP编程

来源:互联网 发布:淘宝50字好评 编辑:程序博客网 时间:2024/06/07 14:54
UDP:以数据为中心,非面向连接,不安全,数据可能丢失,效率高


类:DatagramSocket       DatagramPacket


测试: 先启动服务端     后启动客户端


客户端:

  1、创建客户端+端口,DatagramSocket+指定端口

  2、准备数据:字节数组

  3、打包(发送的地点及端口):DatagramPacket+服务器地址及端口 

  4、发送

  5、释放

import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;public class MyClient {public static void main(String[] args) throws IOException { //1、创建客户端+端口DatagramSocket client = new DatagramSocket(6666);//端口可能被占用,报异常//2、准备数据String msg = "udp编程";byte[] data = msg.getBytes(); //3、打包(发送的地点及端口)DatagramPacket packet = new DatagramPacket(data,0,data.length,new InetSocketAddress("localhost",8888));//4、发送client.send(packet); //5、释放client.close();}}


服务端:
  1、创建服务端+端口:DatagramSocket+指定端口

  2、准备接收容器:字节数组,DatagramPacket封装

  3、封装成包

  4、接收数据

  5、分析数据

  6、释放资源

package cn.Ray.net.udp;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;public class MyServer {public static void main(String[] args) throws IOException { //1、创建服务端+端口DatagramSocket server = new DatagramSocket(8888);//端口可能被占用,报异常 //2、准备接受容器byte[] container = new byte[1024]; //3、封装成包DatagramPacket(byte[] buf, int length)DatagramPacket packet = new DatagramPacket(container,container.length); //4、接收数据server.receive(packet);//阻塞式接收 //5、分析数据byte[] data = packet.getData();int len = packet.getLength();System.out.println(new String(data,0,len));//6、释放资源server.close();}}