Java 如何在有限的时间(超时)内仅从DatagramSocket块进行读取?

Java 如何在有限的时间(超时)内仅从DatagramSocket块进行读取?,java,sockets,network-programming,datagram,Java,Sockets,Network Programming,Datagram,我正在运行网络数据包传输丢失的模拟。我的服务器应用程序有时不会将数据发送回我的客户端 在我的客户机中,我每秒钟对服务器运行ping 10次。但是,如果我的服务器没有发送任何信息,我的客户机将等待,直到收到下一个数据包。如果我没有从服务器上得到任何东西,我如何继续下一次迭代 //attempt to read from server DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.leng

我正在运行网络数据包传输丢失的模拟。我的服务器应用程序有时不会将数据发送回我的客户端

在我的客户机中,我每秒钟对服务器运行ping 10次。但是,如果我的服务器没有发送任何信息,我的客户机将等待,直到收到下一个数据包。如果我没有从服务器上得到任何东西,我如何继续下一次迭代

//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);
您需要设置一个:


clientSocket.setSortimeout(超时以毫秒为单位)

谢谢。这非常有效。我必须抓住SocketTimeoutException