基于 UDP 协议的网络编程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于 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 协议的网络编程的主要内容,如果未能解决你的问题,请参考以下文章