Datagramsocket setSoTimeout

时间:2017-09-14 18:47:56

标签: java sockets server timeout try-catch

我目前正在研究客户端 - 服务器应用程序(用于学习目的),我完全坚持如何正确设置DatagramSocket超时以及如何处理异常。

服务器端看起来像这样:

OpenReport

我想在超时的情况下做的是回到主while循环,这样我就可以处理另一个客户端了。该服务器旨在一次只处理一个客户端。

我尝试在catch块中添加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(); } ... } ,但它不起作用。

1 个答案:

答案 0 :(得分:1)

当套接字收到超时时,OP现在没有如何突破while(running)循环回while(true)循环。

在评论中,我告诉他在抓住break之后使用SocketTimeoutException关键字,他提到这解决了他的问题。