gpt4 book ai didi

java - setSoTimeout 在 java tcp 连接中不起作用

转载 作者:行者123 更新时间:2023-12-01 23:53:18 24 4
gpt4 key购买 nike

我有一个与客户端连接以接收字符串的服务器,但是当连接丢失时,服务器会保持相同的状态,并且不会返回到尝试再次建立连接的状态。我使用了 setSoTimeout 但它不起作用。

这是我的代码:

ServerSocket welcomeSocket = null;
Socket connectionSocket = null;
BufferedOutputStream outToClient = null;

try {
System.out.println("connecting to send "+fileToSend);

welcomeSocket = new ServerSocket(3249);
connectionSocket = welcomeSocket.accept();



connectionSocket.setSoTimeout(10000);
welcomeSocket.setSoTimeout(10000);
outToClient = new BufferedOutputStream(connectionSocket.getOutputStream());


} catch (Exception ex) {
System.out.println("set so");
break;
// Do exception handling
}

有人可以告诉我为什么这没有抛出异常吗?

最佳答案

您实际上需要对客户端输入流进行read调用才能触发SO超时。并且只有当所述read调用阻塞时间超过超时设置时才会触发异常。

此外,在服务器套接字上设置 SO 超时是没有用的,因为您永远不会在服务器端从它“读取”。

关于java - setSoTimeout 在 java tcp 连接中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014172/

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