基于UDP的Socket通信
UDP协议不是一种基于稳定连接的协议,是一种面向数据报包的通信协议,不需要通信双方建立稳定的连接,也没有所谓服务端和客户的概念,数据报包在传输的时候不保证一定及时到达,也不能保证数据报包的到达顺序,但是UDP协议传输效率要远高于TCP/IP。
以下是一个基于UDP的简单的消息发送接收程序。
消息发送方
1.创建一个数据报的网络通道
java" id="highlighter_400655">
1
|
DatagramSocket ds = new DatagramSocket();
|
2.准备需要传输的数据
1
|
String msg = "天王盖地虎,小鸡炖蘑菇!!!" ;
|
3.将需要发送的数据打包成数据报包
1
2
3
4
5
6
|
DatagramPacket packet = new DatagramPacket(
msg.getBytes(), //需要被发送的数据的字节数组
msg.getBytes().length, //发送的数据长度(字节数组长度)
InetAddress.getByName( "localhost" ), //接收方的ip
1025 //接收方的端口
);
|
4.发送数据报包
1
|
ds.send(packet);
|
5.关闭通道
1
|
ds.close();
|
消息接收方
1.创建一个数据报的网络通道,绑定到指定端口
1
|
DatagramSocket ds = new DatagramSocket(1025);
|
2.声明字节数组,用于存储接收的数据
1
|
byte [] b = new byte [ 1024 ];
|
3.准备数据报包(空包)
1
|
DatagramPacket packet = new DatagramPacket(b, b.length);
|
4.接收数据到数据报包中
1
|
ds.receive(packet);
|
5.将数据解析为字符串并输出
1
2
3
4
5
|
//接受到的数据(字节数组)实际长度
int len = packet.getLength();
//将字节数组转换为字符串
String s = new String(b, 0 , len);
System.out.println( "收到的消息:" +s);
|
如要进行循环接收,则将第4、第5步进行无限循环。
到此这篇关于java网络之基于UDP的聊天程序示例解析的文章就介绍到这了,更多相关java基于UDP的聊天程序内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/weixin_45877744/article/details/107743365