gpt4 book ai didi

java - 数据报套接字 setSoTimeout

转载 作者:行者123 更新时间:2023-12-02 12:15:24 27 4
gpt4 key购买 nike

我目前正在开发一个客户端-服务器应用程序(出于学习目的),并且我完全陷入如何正确设置 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();
}

...
}

在超时的情况下我想做的是返回到主 while 循环,这样我就可以处理另一个客户端。服务器被设计为一次仅处理一个客户端。

我尝试在 catch block 中添加 running = false; 但没有成功。

最佳答案

OP 现在不知道如何在套接字接收超时时跳出 while(running) 循环回到 while(true) 循环。

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

关于java - 数据报套接字 setSoTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46226307/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com