Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的双向服务器客户端UDP_Java_Sockets_Udp_Port - Fatal编程技术网

java中的双向服务器客户端UDP

java中的双向服务器客户端UDP,java,sockets,udp,port,Java,Sockets,Udp,Port,我想用java编写一个程序,使用udp处理服务器和客户端之间的双向通信。大多数联机源只指定一种方式,即从客户端到服务器。我希望服务器也能够向客户端发送消息。udp是IP之上的无连接协议。这仅仅意味着在另一端没有建立连接,您只接收数据包。要回复,您必须将数据包“返回”到客户端 为此,客户端需要是可访问的。这可能通过防火墙工作,也可能不工作。通常,如果客户端发起对话,防火墙会被“穿透”,但这并不能保证 还请注意,UDP数据包可能会无序到达、重复或根本没有。你必须做好一切准备。如果发送的数据包比MTU

我想用java编写一个程序,使用udp处理服务器和客户端之间的双向通信。大多数联机源只指定一种方式,即从客户端到服务器。我希望服务器也能够向客户端发送消息。

udp是IP之上的无连接协议。这仅仅意味着在另一端没有建立连接,您只接收数据包。要回复,您必须将数据包“返回”到客户端

为此,客户端需要是可访问的。这可能通过防火墙工作,也可能不工作。通常,如果客户端发起对话,防火墙会被“穿透”,但这并不能保证


还请注意,UDP数据包可能会无序到达、重复或根本没有。你必须做好一切准备。如果发送的数据包比MTU大,则由于拆分,数据包不到达的可能性更大。

如果不能使用TCP,仍然可以使用UDP实现相同的行为

有三个方面需要考虑。 首先,你提到:你想用两种方式交流。您可以通过在客户端和服务器上运行发送器和侦听器线程来实现这一点

第二:UDP数据包不保证到达。您必须在应用程序层中实现ACK逻辑


第三:UDP数据包不保证按顺序到达。您必须在应用程序层中实现某种排序

真的吗?因此,客户端甚至无法判断服务器是否收到了消息?UDP数据包将完整到达还是根本不到达。永远不要分块。你是对的,即使它在网络上被拆分,重新组装也是透明的。更正。