我想在java中编写一个程序,使用udp处理服务器和客户端之间的双向通信。在线源的大多数只指定一种方式,即从客户端到服务器。我希望服务器能够发送消息对客户也是如此。
答案 0 :(得分:0)
UDP是IP之上的无连接协议。这只是意味着您在另一端没有建立连接,您只是接收数据包。要回复,您必须“回”给客户端发送一个数据包。
为此,客户端需要可以访问。这可能会或可能不会通过防火墙。通常,如果客户端发起对话,防火墙就会“穿透”,但无法保证。
另请注意,UDP数据包可能无序到达,重复或根本不到。你必须为所有人做好准备。如果发送更大(超过MTU)的数据包,由于分裂,它们可能更有可能无法到达。
答案 1 :(得分:0)
如果您不能使用TCP,您仍然可以使用UDP实现相同的行为。
有三个方面需要考虑。
首先,您提到:您想要双向沟通。您可以通过在客户端和服务器上运行发送方和侦听器线程来实现此目的。
第二:不保证UDP数据包到达。您必须在应用程序层中实现ACK逻辑。
第三:不保证UDP数据包按顺序到达。您必须在应用程序层中实现某种排序。