0
我目前正在研究一個客戶端服務器應用程序(用於學習目的),我完全停留在如何正確設置DatagramSocket超時以及如何處理異常。Datagramsocket setSoTimeout
服務器端是這樣的:
while (true) {
try {
serverSocket = new DatagramSocket(25000);
running = acceptConnection(serverSocket, ready);
serverSocket.setSoTimeout(5000);
while (running) {
receivePacket = new DatagramPacket(receiveData, receiveData.length);
try {
serverSocket.receive(receivePacket);
} catch (SocketTimeoutException e) {
System.out.println("Timed out...");
}
receiveMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
...
}
...
} catch (IOException e) {
System.err.println("");
} finally {
serverSocket.close();
}
...
}
什麼,我想在超時的情況下做的是回到主while循環,所以我可以處理其他客戶端。服務器一次只能處理一個客戶端。
我試圖在catch塊中添加running = false;
,但它不起作用。
請顯示整個while循環。目前還不清楚捕捉塊位於哪一層。 –
我現在編輯了這篇文章並進行了解釋。很抱歉對於這個誤會。 – ZeppRock
如何在連接時間結束時調用使用引導遞歸的方法 –