gpt4 book ai didi

java - 如何在 Java 中捕获套接字超时

转载 作者:行者123 更新时间:2023-12-02 00:11:20 25 4
gpt4 key购买 nike

我正在用 Java.net 编写一个服务器。现在我想更改套接字超时的一些变量。

我找不到“onTimeout”接口(interface)或类似的东西。

现在我正在寻找解决这个问题的方法。

最佳答案

你说你正在使用java.net,所以我假设你正在使用类似于java.net.ServerSocket的东西。如果您调用setSoTimeout在您的 ServerSocket 实例上,您将能够为套接字设置超时。然后,当您在调用 accept 期间阻塞时,您的 ServerSocket 将跟踪超时。正如您在文档中看到的,如果定义了超时并且等待时间超过了超时,accept 会抛出 SocketTimeoutException 。所以,你最终会得到这样的结果(请原谅我对 Socket 有点生疏):

try(ServerSocket ssock = new ServerSocket(...))
{
ssock.setSoTimeout(10_000); // 10 second timeout
while(true)
{
Socket csock = ssock.accept();
methodToStartThreadThatHandlesClientSocket(csock);
}
}
catch(SocketTimeoutException ste)
{
//handle socket timeout
}
catch(Exception other)
{
//handle other exceptions
}

关于java - 如何在 Java 中捕获套接字超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58118724/

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