根据http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/index.html,内核 keepalive 函数发生在操作系统级别,不需要应用程序显式调用它。但是,我还读到过应用程序必须如何调用它(使用 SO_KEEPALIVE)才能真正利用内核功能。
点击这里 >Linux 上的“保持连接”选项不适用于传出连接
有人可以澄清一下吗?
谢谢!
答案1
除非明确打开应用程序套接字,否则不会发生这种情况。此外,明确提出在您提到的 TCP Keepalive HOWTO 中:
请记住,即使在内核中配置了 keepalive 支持,它也不是 Linux 中的默认行为。程序必须使用 setsockopt 接口请求对其套接字的 keepalive 控制。实现 keepalive 的程序相对较少,但您可以按照本文档后面的说明,轻松地为大多数程序添加 keepalive 支持。