Datagramsocket setSoTimeout



我当前正在处理客户端服务器应用程序(用于学习目的),我完全遇到了如何正确设置DataGramSocket超时以及如何处理异常。

服务器端看起来像这样:

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();
    }
    ...
}

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

我尝试在捕获块中添加running = false;,但它不起作用。

op现在没有如何从 while(running)循环中突破 while(true)循环,当插座接收到及时。

在捕获SocketTimeoutException后,我告诉他使用break关键字,他提到这解决了他的问题。

相关内容

  • 没有找到相关文章

最新更新