Advertisement

UDP:信息的发送与接收

阅读量:

UDP

UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。
由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。UDP在传输时,会将数据进行分包处理,每一个包的大小不超过64k。

DatagramSocketDatagramPacket 两个类是 基于UDP 协议进行通信的包装类

例子?

发送端代码

public class TestSender {

public static void main(String[] args) throws IOException {

// 创建发送端

DatagramSocket client = new DatagramSocket();

// 准备数据

String string = "摩西摩西,晓雯小可爱在吗";

// 打包发送

// 参数1:数据的字节数组

// 参数2:数据的字节数组长度

// 参数3:接收端IP

// 参数4:接收端口号

DatagramPacket pacekt = new DatagramPacket(string.getBytes(), string.getBytes().length, InetAddress.getLocalHost(), 8989);

// 发送数据包

client.send(pacekt);

// 关流

client.close();

}

}

接收端代码

public class TestReceiver {

public static void main(String[] args) throws IOException {

// 基于DUP协议

// 创建接收端+端口号

DatagramSocket server = new DatagramSocket(8989);

// 创建接收容器

byte[] bs = new byte[1024];

// 封装成包

DatagramPacket packet = new DatagramPacket(bs, bs.length);

// 接受信息

server.receive(packet);

// 获取信息实际长度

System.out.println(packet.getLength());

// 获取信息内容

System.out.println(new String(packet.getData(), 0, packet.getLength()));

// 获取IP

System.out.println(packet.getAddress());

// 获取端口号

System.out.println(packet.getPort());

// 关流

server.close();

}

}

全部评论 (0)

还没有任何评论哟~