2011-04-04 22 views
1

我正在運行網絡數據包傳輸丟失的模擬。我的服務器應用程序有時不會將數據發送回我的客戶端。如何在有限時間(超時)內從DatagramSocket塊中讀取數據?

在我的客戶端中,我每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); 

回答

4

你想設置一個timeout

clientSocket.setSoTimeout(TIMEOUT_IN_MILLISECONDS)

+0

感謝。那完美的工作。我不得不趕上SocketTimeoutException – Tony 2011-04-04 01:43:35

+0

@Tony:是的,不客氣! :) – mre 2011-04-04 01:44:45

相關問題