UDP通信实现原理
UDP协议与之前讲到的TCP协议不同,是面向无连接的,双方不需要建立连接便可通信。UDP通信所发送的数据需要进行封包操作(使用DatagramPacket类),然后才能接收或发送(使用DatagramDocket类)。
DatagramPacket:数据容器(封包)的作用
此类表示数据报包。数据报包用来实现封包的功能。
常用方法:
方法名 | 使用说明 |
DatagramPacket(byte[] buf,int length) | 构造数据包,用来接收长度为length的数据包 |
DatagramPacket(byte[] buf,int length,InetAddress address,int port) | 构造数据包,用来将长度为length的包发送到指定主机上的指定端口号 |
getAddress() | 获取发送或接收方计算机的IP地址,此数据报将要发往该机器或者是从该机器接收到的 |
getData() | 获取发送或接收的数据 |
setData(byte[] buf) | 设置发送的数据 |
DatagramSocket:用于发送或接收数据报包
当服务器要向客户端发送数据时,需要在服务器端产生一个DatagramSocket对象,在客户端产生一个DatagramSocket对象。服务器端的DatagramSocket将DatagramPacket发送到网络上,然后被客户端的DatagramSocket接收。
DatagramSocket有两种常用的构造函数。一种是无需任何参数的,常用于客户端;另一种需要指定端口,常用于服务器端。如下所示:
1.DatagramSocket():构造数据套接字并将其绑定到本地主机上任何可用的端口。
2.DatagramSocket(int port):创建数据报套接字并将其绑定到本地主机上的指定端口。
常用方法:
方法名 | 使用说明 |
send(DatagramPacket p) | 从此套接字发送数据报包 |
receive(DatagramPacket p) | 从此套接字发送数据报包 |
close() | 关闭此数据报套接字 |
UDP通信编程基本步骤:
1.创建服务器端的DatagramSocket,创建时,定义服务器端的监听端口。
2.在服务器端定义DatagramPacket对象,封装待发送的数据包。
3.客户端将数据包发送出去。
4.服务器端接收数据报包。