Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尽管LAN电缆未插入,OutputStream不会引发IOException_Java_Sockets_Tcp_Ioexception_Outputstream - Fatal编程技术网

Java 尽管LAN电缆未插入,OutputStream不会引发IOException

Java 尽管LAN电缆未插入,OutputStream不会引发IOException,java,sockets,tcp,ioexception,outputstream,Java,Sockets,Tcp,Ioexception,Outputstream,我用Java建立了TCP连接。服务器每秒向客户端发送一条活动消息以检测断开的连接 但当我插入LAN电缆时,IOException会在23秒后立即抛出,而不是在尝试发送后立即抛出 我要发送的代码是这样的 // out is an OutputStream try { out.write(String.format("%s\r\n", encryptedCommand).getBytes(Charset.forName("UTF-8"))); } catch (IOException e)

我用Java建立了TCP连接。服务器每秒向客户端发送一条活动消息以检测断开的连接

但当我插入LAN电缆时,IOException会在23秒后立即抛出,而不是在尝试发送后立即抛出

我要发送的代码是这样的

// out is an OutputStream
try {
    out.write(String.format("%s\r\n", encryptedCommand).getBytes(Charset.forName("UTF-8")));
} catch (IOException e) {
    fireConnectionClosed();
}

我很确定这已经起作用了,但现在它不再起作用了

当TCP数据包无法通过时,TCP堆栈会重新发送数据包几次。这使得即使偶尔丢失数据包,连接也能保持正常。这可以防止在网络上出现最小的拥塞时连接中断的问题。您可以通过拔下网络插头5或10秒钟,然后重新插入来测试这一点-连接应该很好

但是,此功能还意味着TCP连接只有在重试几次后才会被识别为丢失