断开连接时,Java套接字不会超时

乔万·佩罗维奇(Jovan Perovic)

我在自动化测试中看到一些奇怪的问题。

有以下设置:服务器:Centos 6客户端1:Windows 7客户端2:Centos 6

我正在编写通过阻塞服务器的出站连接来模拟与服务器的连接中断的测试iptables但是,套接字的行为在Windows上与Linux客户端上的套接字不同。

不过,在两种情况下,都有一行Java代码可以执行以下操作:

socket.setSoTimeout(0)

方案1(Windows):

  • 发送ssh命令到服务器iptables -A OUTPUT --dport XYZ -j DROP
  • 大约60秒后,我的控制台说 java.net.SocketTimeoutException: Read timed out
  • 连接下降

场景2(Centos)

  • 发送与上述相同的命令
  • 我尝试等待多达10分钟,但控制台从未输出异常。

因此,问题是,有没有办法使套接字的行为相同(或近似相同)?

我读到Windows实际上并没有使用SO_TIMEOUTSO_RCVTIMEO而是使用了

戴维·波斯蒂尔

setSoTimeout(int timeout)

以指定的超时时间启用/禁用SO_TIMEOUT,以毫秒为单位。通过将此选项设置为非零超时,与此套接字关联的InputStream上的read()调用将仅在此时间量内阻塞。如果超时到期,则尽管Socket仍然有效,但将引发java.net.SocketTimeoutException。必须先启用该选项,然后才能执行阻止操作。超时必须大于0。零超时被解释为无限超时

您可以设置实际的超时值吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

客户端断开连接时,服务器不会删除/断开套接字

来自分类Dev

Internet断开时,不会调用TCP IO Akka套接字关闭的连接

来自分类Dev

Java线程套接字连接超时

来自分类Dev

套接字连接超时

来自分类Dev

断开或重新加载时,Io套接字重置连接

来自分类Dev

套接字断开连接时退出Python While循环

来自分类Dev

断开或重新加载时Io套接字重置连接

来自分类Dev

如何判断套接字是否已断开连接(Java)

来自分类Dev

当我尝试使用外部IP连接到服务器时Java套接字超时

来自分类Dev

Android套接字连接超时

来自分类Dev

套接字等待连接超时

来自分类Dev

在Python套接字上连接失败时正确设置超时

来自分类Dev

Java客户端套接字返回连接超时异常

来自分类Dev

在Android中连接和断开套接字

来自分类Dev

套接字始终断开C ++的连接

来自分类Dev

SocketIO断开连接,退出套接字监听

来自分类Dev

在Android中连接和断开套接字

来自分类Dev

套接字无法检测到断开连接

来自分类Dev

Java套接字编程-套接字在连接完成之前超时

来自分类Dev

节点网络套接字连接超时

来自分类Dev

与本地主机的套接字连接超时

来自分类Dev

Fabric套接字异常:连接超时

来自分类Dev

如何设置失败连接的套接字超时

来自分类Dev

节点网络套接字连接超时

来自分类Dev

Java多线程TCP套接字-从客户端接收消息,直到它们断开连接

来自分类Dev

连接到服务器时客户端套接字超时

来自分类Dev

与Qt的Java套接字连接

来自分类Dev

处理断开的套接字

来自分类Dev

强制套接字断开连接而不伪造RST,Linux