Avihai Marchiano Asked: 2012-09-25 06:23:57 +0800 CST2012-09-25 06:23:57 +0800 CST 2012-09-25 06:23:57 +0800 CST TCP keepalive 是如何工作的 772 我在 Ubuntu 上运行,我想使用 TCP keepalive 来实现主从之间的心跳。两台服务器都是我的 impl (c++)。我阅读了这篇概述并进行了一些谷歌搜索。我不明白 TCP keepalive 发送什么,我知道在 TCP keepalive 中使用时连接是否不再有效?。我需要检查恢复的内容吗? 目标是在 master-slave 之间建立心跳,所以如果一个失败,另一个将成为主人。在这篇文章中,建议是使用 tcp keepalive 机制实现 hearbeat,所以这就是我问在使用 tcp keepalive 时如何识别断开的连接的原因。 tcp 1 个回答 Voted Best Answer David Schwartz 2012-09-25T09:59:54+08:002012-09-25T09:59:54+08:00 您似乎将 TCP keepalive 机制与名为keepalived的负载平衡守护进程混淆了。两者没有任何关系。如果您试图检测两个程序之间的连接丢失或问题,这两个程序都是您编写的,那么您不需要任何一种机制。 如果您想在编写两个程序时检测两个程序之间的不良连接,只需在代码中构建无效连接检测即可。TCP 保证发送方将检测到死连接。所以最简单的方案就是保证双方都周期性发送。另一种解决方案是确保一方定期发送,如果另一方没有收到该定期数据,则声明连接已断开。
您似乎将 TCP keepalive 机制与名为keepalived的负载平衡守护进程混淆了。两者没有任何关系。如果您试图检测两个程序之间的连接丢失或问题,这两个程序都是您编写的,那么您不需要任何一种机制。
如果您想在编写两个程序时检测两个程序之间的不良连接,只需在代码中构建无效连接检测即可。TCP 保证发送方将检测到死连接。所以最简单的方案就是保证双方都周期性发送。另一种解决方案是确保一方定期发送,如果另一方没有收到该定期数据,则声明连接已断开。