18.5 UDP数据报通信
用户数据报协议(UDP)是一种无连接的客户/服务器通信协议。它不保证数据报会被对方完全接收,也不保证它们抵达的顺序与发出时一样,但它的速度比TCP/IP协议要快得多。所以,对于某些不需要保证数据完整准确的场合,或是数据量很大的场合(比如声音、视频)等,通常采用UDP通信。另外在局域网中,数据丢失的可能性很小,也常采用UDP通信。
UDP通信中,需要建立一个DatagramSocket,与Socket不同,它不存在"连接"的概念,取而代之的是一个数据报包--DatagramPacket。这个数据报包必须知道自己来自何处,以及打算去哪里。所以本身必须包含IP地址、端口号和数据内容。
18.5.1 DatagramSocket的使用方法
DatagramSocket可以用来创建收、发数据报的socket对象。如果用它来接收数据,应该用下面这个创建方法:
public DatagramSocket(int port) throws SocketException |
其中,参数port指定接收时的端口。
如果用来发送数据,应该用这个:
public DatagramSocket() throws SocketException |
所有的端口、目的地址和数据,需要由DatagramPacket来指定。
接收数据时,可以使用它的receive(DatagramPacket data)方法。获取的数据报将存放在data中。发送数据时,可以使用它的send(DatagramPacket data)方法。发送的端口、目的地址和数据都在data中。