发布
社区首页 >问答首页 >即使没有插入局域网电缆,OutputStream也不会抛出IOException

即使没有插入局域网电缆,OutputStream也不会抛出IOException
EN

Stack Overflow用户
提问于 2014-05-12 19:08:58
回答 1查看 67关注 0票数 0

我与Java建立了TCP连接。服务器每秒向客户端发送一个“活动”-Message,以检测断开的连接。

但是当我插入局域网电缆时,IOException恰好在23秒后抛出,而不是在发送尝试之后立即抛出。

我要发送的代码如下所示

代码语言:javascript
代码运行次数:0
复制
// out is an OutputStream
try {
    out.write(String.format("%s\r\n", encryptedCommand).getBytes(Charset.forName("UTF-8")));
} catch (IOException e) {
    fireConnectionClosed();
}

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

EN

回答 1

Stack Overflow用户

发布于 2014-05-13 01:41:01

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23607385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档