首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux /IP编程中的精确定时保持活力

linux /IP编程中的精确定时保持活力
EN

Stack Overflow用户
提问于 2013-09-23 03:39:08
回答 1查看 807关注 0票数 0

据我所知,有两种解决半开放连接问题的方法。一个是心跳技术。另一个是我的问题:保持-活着。

我知道让三性保持活力就像:

tcp_keepalive_time \ tcp_keepalive_intvl \ tcp_keepalive_probes.

我让他们

5秒\1秒\ 10

这意味着要保持活动例程等待5秒,然后发送第一个保活探针,然后每1秒重新发送一次。如果连续10次没有收到ACK响应,则将连接标记为断开。

我在linux C++代码中通过调用setsockopt()为它启用了“保持活动”并设置了这些属性,有时,它运行良好,如下所示:

但在另一时间,“保持生存”的不发送,而重传消息被发送并塞进:

它只发送7次(每次重发之间的时间大于1秒,几乎2~5秒)。然后被塞了很长时间。

那么,为什么TCP有时不保持存活呢?我怎样才能确保一直都能发出保持生命的探测器。我该做点别的吗?

谢谢你的帮助。

编辑

  1. 正如@West说的那样,卡住来自于未被确认的传输后的指数退避,但是为什么重传阻碍了发送保持生存的探针的过程?有什么优先事项吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-23 04:26:01

在我看来,这就像是一次未被确认的传输后的指数退避。TCP_MAXRT将允许您设置您想要等待多长时间才能放弃尝试传输。TM_TCP_MAX_REXMIT将允许您设置重试的最大次数。

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

https://stackoverflow.com/questions/18951457

复制
相关文章

相似问题

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