nik*_*nik 5 windows tcp keepalive windows-registry
我可以更改/添加KeepAliveTime相关的注册表变量以使 Windows 机器在空闲连接上发送 TCP 保持活动数据包吗?
我想知道是否有人成功地完成了这项工作。具体来说,当应用程序在 TCP 连接上空闲时没有做任何特别的事情 (setsockopt) 来保持连接。
此 Microsoft TechNet 详细介绍了使用KeepAliveTime和相关注册表变量配置系统范围的 Keep-Alive。
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime
看起来像是使用 keep-alive的Linux 系统范围的配置。
但是,这需要程序使用setsockopt()并请求保持活动状态(对吗?)。
请记住,即使在内核中配置了 keepalive 支持,也不是 Linux 中的默认行为。程序必须使用setsockopt 接口为其套接字请求keepalive 控制。实现keepalive的程序相对较少......
您对 Windows 中的 TCP keepalive 功能与 Linux 类似的评估是正确的。
您可以随心所欲地操作与 TCP 保活相关的注册表参数,但除非应用程序用于setsockopt()请求保活,否则默认情况下不会发送任何信息。
如果您想在 Windows 上实际看到 keepalives 的运行情况并且不想编写代码,请在PuTTY SSH/TELNET/etc 客户端的“Connection”属性中勾选“Enable TCP keepalives (SO_KEEPALIVE)” ,启动连接,让它闲置,并嗅探流量。(这是我能想到的第一个应用程序,我知道可以有意识地配置为使用 SO_KEEPALIVE ......)