我与Java建立了TCP连接。服务器每秒向客户端发送一次" ALIVE" -Message以检测断开的连接。
但是当我插入LAN-cable时,IOException将在23秒后完全抛出,而不是在发送尝试之后立即抛出。
我发送的代码就像那样
// out is an OutputStream
try {
out.write(String.format("%s\r\n", encryptedCommand).getBytes(Charset.forName("UTF-8")));
} catch (IOException e) {
fireConnectionClosed();
}
我很确定这已经有效了,但现在它已经没有了
答案 0 :(得分:0)
当TCP数据包无法通过时,TCP堆栈会重新发送数据包几次。即使偶尔丢失数据包,这也可以使连接保持正常。这可以防止在网络拥塞最少时连接丢失的问题。您可以通过拔下网络5或10秒,然后重新插入网络来测试这一点 - 连接应该没问题。
但是,此功能还意味着TCP连接在重试几次后才会被识别为丢失。