我与Java建立了TCP连接。服务器每秒向客户端发送一个“活动”-Message,以检测断开的连接。
但是当我插入局域网电缆时,IOException恰好在23秒后抛出,而不是在发送尝试之后立即抛出。
我要发送的代码如下所示
// out is an OutputStream
try {
out.write(String.format("%s\r\n", encryptedCommand).getBytes(Charset.forName("UTF-8")));
} catch (IOException e) {
fireConnectionClosed();
}
我很确定这已经起作用了,但现在它不再起作用了
发布于 2014-05-13 01:41:01
当TCP数据包无法通过时,TCP堆栈会多次重新发送该数据包。这允许连接保持连接,即使偶尔丢失数据包也是如此。这可以防止在网络上出现最轻微的拥塞时出现连接中断的问题。您可以通过拔出网络5秒或10秒,然后重新插入网络来测试这一点-连接应该是正常的。
但是,此功能也意味着TCP连接在几次重试后才会被识别为已丢失。
https://stackoverflow.com/questions/23607385
复制相似问题