UDP网络通信
介绍
1.类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序。
2.UDP数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定
3.什么时候可以抵达。
4.DatagramPacket 对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号。UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接
5.发送端与接收端是两个独立的运行程序
流程
DatagramSocket与DatagramPacket
1.建立发送端,接收端
2.建立数据包
3.调用Socket的发送、接收方法
4.关闭Socket
public class UDP1 {
@Test
public void send() throws UnknownHostException {// 发送端
DatagramSocket ds = null;
try {
ds = new DatagramSocket();
byte[] bs = "你好,我是发送者".getBytes();
// 创建一个数剧包,每个数据包不能大于64K,都记录着数据信息,和发送端的ip和端口和接收端的ip和端口
DatagramPacket dp = new DatagramPacket(bs, 0, bs.length, InetAddress.getByName("127.0.0.1"), 8989);
ds.send(dp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
ds.close();
}
}
@Test
public void recive() {// 接收端
try {
DatagramSocket ds = new DatagramSocket(8989);
byte[] bs = new byte[1024];
DatagramPacket dPacket = new DatagramPacket(bs, bs.length);
ds.receive(dPacket);
String string = new String(dPacket.getData(), 0, dPacket.getLength());
System.out.println(string);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}