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
如何在连接时间结束时调用使用引导递归的方法 –