我在自动化测试中看到一些奇怪的问题。
有以下设置:服务器:Centos 6客户端1:Windows 7客户端2:Centos 6
我正在编写通过阻塞服务器的出站连接来模拟与服务器的连接中断的测试iptables
。但是,套接字的行为在Windows上与Linux客户端上的套接字不同。
不过,在两种情况下,都有一行Java代码可以执行以下操作:
socket.setSoTimeout(0)
ssh
命令到服务器iptables -A OUTPUT --dport XYZ -j DROP
java.net.SocketTimeoutException: Read timed out
因此,问题是,有没有办法使套接字的行为相同(或近似相同)?
我读到Windows
实际上并没有使用SO_TIMEOUT
,SO_RCVTIMEO
而是使用了。
以指定的超时时间启用/禁用SO_TIMEOUT,以毫秒为单位。通过将此选项设置为非零超时,与此套接字关联的InputStream上的read()调用将仅在此时间量内阻塞。如果超时到期,则尽管Socket仍然有效,但将引发java.net.SocketTimeoutException。必须先启用该选项,然后才能执行阻止操作。超时必须大于0。零超时被解释为无限超时。
您可以设置实际的超时值吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句