java中的socket2路服务器客户端UDP 2 月,2 周 Questions & Answers 1651 我想用java编写一个程序,使用udp处理服务器和客户端之间的双向通信。大多数联机源只指定一种方式,即从客户端到服务器。我希望服务器也能够向客户端发送消息
# 1 楼答案 UDP是IP之上的无连接协议。这仅仅意味着在另一端没有建立连接,您只接收数据包。要回复,您必须将数据包“返回”到客户端 为此,客户端需要是可访问的。这可能通过防火墙工作,也可能不工作。通常,如果客户端发起对话,防火墙会被“穿透”,但这并不能保证 还请注意,UDP数据包可能会无序到达、重复或根本没有。你必须做好一切准备。如果您发送的数据包比MTU的数据包大,那么由于拆分,这些数据包可能无法到达
# 2 楼答案 如果不能使用TCP,则仍然可以使用UDP实现相同的行为 有三个方面需要考虑。 首先,你提到:你想用两种方式交流。您可以通过在客户端和服务器上运行发送器和侦听器线程来实现这一点 第二:UDP数据包不保证到达。您必须在应用程序层中实现ACK逻辑 第三:UDP数据包不保证按顺序到达。您必须在应用程序层中实现某种排序
# 1 楼答案
UDP是IP之上的无连接协议。这仅仅意味着在另一端没有建立连接,您只接收数据包。要回复,您必须将数据包“返回”到客户端
为此,客户端需要是可访问的。这可能通过防火墙工作,也可能不工作。通常,如果客户端发起对话,防火墙会被“穿透”,但这并不能保证
还请注意,UDP数据包可能会无序到达、重复或根本没有。你必须做好一切准备。如果您发送的数据包比MTU的数据包大,那么由于拆分,这些数据包可能无法到达
# 2 楼答案
如果不能使用TCP,则仍然可以使用UDP实现相同的行为
有三个方面需要考虑。
首先,你提到:你想用两种方式交流。您可以通过在客户端和服务器上运行发送器和侦听器线程来实现这一点
第二:UDP数据包不保证到达。您必须在应用程序层中实现ACK逻辑
第三:UDP数据包不保证按顺序到达。您必须在应用程序层中实现某种排序