JavaSE进阶

16.5 UDP网络通信

16.5.1 UDP网络通信

  • 类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序。
  • UDP数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。
  • DatagramPacket 对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号。
  • UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接

16.5.2 

  • 流  程:
    1. DatagramSocket与DatagramPacket
    2. 建立发送端,接收端
    3. 建立数据包
    4. 调用Socket的发送、接收方法
    5. 关闭Socket
  • 发送端与接收端是两个独立的运行程序

16.5.3 送端

DatagramSocket ds = new DatagramSocket();

byte[] by = “hello,atguigu.com”.getBytes();

DatagramPacket dp = new DatagramPacket(by,0,by.length,

InetAddress.getByName(“127.0.0.1”),10000);

ds.send(dp);

ds.close();

16.5.4 接收端

//在接收端,要指定监听的端口。

DatagramSocket ds = new DatagramSocket(10000);

byte[] by = new byte[1024];

DatagramPacket dp = new DatagramPacket(by,by.length);

ds.receive(dp);

String str = new String(dp.getData(),0,dp.getLength());

System.out.println(str+"--"+dp.getAddress());

ds.close();