我正在运行网络数据包传输丢失的模拟。我的服务器应用程序有时不会将数据发送回我的客户端。
在我的客户端中,我每秒钟向服务器运行 10 次 ping。但是,在我的服务器没有发回任何东西的情况下,我的客户端将等待直到收到下一个数据包。如果我没有从服务器获取任何信息,我该如何继续下一次迭代?
//attempt to read from server
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
receivePacket.getData();
//client blocks on this line until something is received from server
clientSocket.receive(receivePacket);
String receivedFromServer = new String(receivePacket.getData());
System.out.println("FROM SERVER:" + receivedFromServer);
最佳答案
您需要设置一个 timeout :
clientSocket.setSoTimeout(TIMEOUT_IN_MILLISECONDS)
关于java - 如何在有限的时间内(超时)从 DatagramSocket 中读取数据 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5533730/