首页 > 代码库 > 基于 UDP 协议的网络编程
基于 UDP 协议的网络编程
- 类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序
- UDP 数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证 UDP 数据报一定能够安全送到目的地,也不能确定什么时候可以抵达
- DatagramPacket 对象封装了 UDP 数据报(<64k),在数据报中包含了发送端的 IP 地址和端口号以及接收端的 IP 地址和端口号
- UDP 协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接
举例:
public class TestUDP {
@Test
public void send() {
DatagramSocket ds = null;
try {
// 构造数据报套接字并将其绑定到本地主机上任何可用的端口
ds = new DatagramSocket();
byte[] b = "test message".getBytes();
// 创建数据报包(把要发送的数据封装进去)
DatagramPacket dp = new DatagramPacket(b, 0, b.length, InetAddress.getByName("127.0.0.1"), 6789);
// 发送数据报包(须<64KB,不保证投递成功)
ds.send(dp);
} catch (Exception e) {
e.printStackTrace();
} finally {
ds.close();
}
}
@Test
public void receive() {
DatagramSocket ds = null;
try {
// 构造数据报套接字并将其绑定到本地主机上将要接收发送端数据的端口
ds = new DatagramSocket(6789);
byte[] b = new byte[1024];
// 创建数据报包(指明 b 为接收对象)
DatagramPacket dp = new DatagramPacket(b, 0, b.length);
// 接收数据报包
ds.receive(dp);
// 打印接受到的数据到控制台
String str = new String(dp.getData(), 0, dp.getLength());
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
} finally {
ds.close();
}
}
}
基于 UDP 协议的网络编程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。