Java教程是为JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改以获取Java SE 9和后续版本中更新的语言特性的摘要。
请参阅JDK发行说明以获取所有JDK版本的新功能、增强功能和已删除或已弃用选项的信息。
您编写的一些用于在网络上进行通信的应用程序不需要可靠的、点对点的TCP通道。相反,您的应用程序可能会受益于一种通信模式,该模式传递独立的信息包,其到达和到达顺序不被保证。
UDP协议提供了一种网络通信模式,应用程序可以在此模式下向彼此发送称为数据报的数据包。数据报是通过网络发送的独立、自包含的消息,其到达、到达时间和内容均不受保证。Java的DatagramPacket
和DatagramSocket
类使用UDP实现了系统独立的数据报通信,这些类位于java.net
包中。
数据报是通过网络发送的独立、自包含的消息,其到达、到达时间和内容均不受保证。
本节将引导您通过一个示例,该示例包含两个使用数据报进行通信的Java程序。服务器端是一个引用服务器,它监听其DatagramSocket
并在客户端请求时向客户端发送引用。客户端是一个简单的程序,仅向服务器发出请求。
本节修改了引用服务器,以便在接收到请求时不仅向单个客户端发送引用,而是每分钟向所有正在监听的客户端广播引用。客户端程序必须相应进行修改。
许多防火墙和路由器被配置为不允许UDP数据包。如果您在防火墙外连接到服务或客户端无法连接到您的服务,请向系统管理员询问是否允许使用UDP。