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 - Fatal编程技术网

Java UDP套接字和多个应答

Java UDP套接字和多个应答,java,sockets,udp,Java,Sockets,Udp,我是一个学习者,所以请耐心和清晰。我正在编写一个带有Java套接字(DatagramSocket)的echo客户端 客户机向echo服务器发送消息后,服务器故意将消息的1-10个副本发送回,以模拟UDP中的消息复制 但是,我的代码只能接收返回的第一条消息,而不能接收服务器发送的完整数字。我的接收代码如下: socket.receive(receivePacket); 如何将我的客户机置于一种状态,在这种状态下,您可以输入一个字符串进行回送,说“嗨”,然后将其发送到服务器,但随后可以接收所有回复

我是一个学习者,所以请耐心和清晰。我正在编写一个带有Java套接字(DatagramSocket)的echo客户端

客户机向echo服务器发送消息后,服务器故意将消息的1-10个副本发送回,以模拟UDP中的消息复制

但是,我的代码只能接收返回的第一条消息,而不能接收服务器发送的完整数字。我的接收代码如下:

socket.receive(receivePacket);

如何将我的客户机置于一种状态,在这种状态下,您可以输入一个字符串进行回送,说“嗨”,然后将其发送到服务器,但随后可以接收所有回复?我假设它们都返回到客户端(我正在本地机器上测试,这样就不会丢失)

再次调用socket.receive以接收其他数据包。在确定服务器已发送其所有数据包之前等待一段合理的时间

再次调用socket.receive以接收其他数据包。在确定服务器已发送其所有数据包之前等待一段合理的时间

嗨。。。所以我首先将套接字超时设置为1000ms,然后通过该套接字发送消息,然后说输入调用socket.receive(…)的while(true)循环,直到抛出SocketTimeoutException。。。这将是允许回复到达客户端的“最长时间窗口”。听起来正常吗?是的。您可以考虑在发送初始消息后设置超时。我建议第一次响应最多等待3-5秒(特别是在互联网上),然后将超时时间改回1秒以使用重复的响应。嗨。。。所以我首先将套接字超时设置为1000ms,然后通过该套接字发送消息,然后说输入调用socket.receive(…)的while(true)循环,直到抛出SocketTimeoutException。。。这将是允许回复到达客户端的“最长时间窗口”。听起来正常吗?是的。您可以考虑在发送初始消息后设置超时。我建议等待可能长达3-5秒的第一个响应(特别是如果您是通过internet执行此操作),然后将超时时间更改回1秒以使用重复的响应。