Java UDP 编程简介

涉及到的类

  1. java.net.DatagramPacket
  2. java.net.DatagramSocket

UDP协议头

IP包已经包含了源地址和目的地址。UDP数据报由可选的源端口、必须的目的端口、数据报含头的总长度、校验和以及数据。

在java编程中,其中的源端口由DatagramSocket控制,目的端口由DatagramPacket控制,不过都存储在DatagramPacket对象当中。

客户端发送用户数据报(UDP Packet)的流程

  1. 准备一个字节数组作为数据报的数据
  2. 创建DatagramPacket对象,设置其目的地址和目的端口,不必管本地端口,本地端口由DatagramSocket自动选择空闲端口
  3. 创建DatagramSocket对象,不必设置端口等信息
  4. 用DatagramSocket对象发送DatagramPacket对象

客户端代码

服务器端

  1. 创建DatagramSocket,指定要监听的端口
  2. 创建空白数据报对象
  3. 接受数据报到准备好的空白数据包对象里
  4. 从数据报里取数据、发送方主机的地址和发送端口

注意,由于本机地址不会在接收到的数据包中,所以无法从数据报对象的getAddress()方法中获得IP地址。getSocketAddress()方法会判断是否是本地地址,如果是则会给一个代表本地地址的IP。所以在测试的时候应使用后一个方法获得地址。

服务器端显示

image-20200220211220244

Home Page