在Windows(Vista及更高版本)中,有一种方法或工具可以帮助确定是否已使用SO_KEEPALIVE选项创建现有的已建立的传出TCP连接。
在Unix平台上,通常可以使用netstat看到这一点(即'netstat -o'将为KEEPALIVE显示一个单独的列)。
Windows上的Netstat没有此功能。我测试过的其他Microsoft / SysInternals网络工具也没有。
我似乎无法找到可以提供此信息的工具。
方案是:在Windows 2008 R2服务器上运行的应用程序需要在其建立的所有连接上启用TCP keepalive。某些应用程序没有启用TCP keepalive的选项,我需要某种方法来确定这些应用程序是否默认启用它。
要明确:我需要一些工具或关于如何编程工具的建议,这表明现有的winsock连接是否启用了TCP keepalive。虽然还有其他方法可以确定这一点(例如嗅探流量并查看是否发送了keepalive数据包),但它们都具有不确定性。此外,我们谈论的是很多服务器和很多应用程序。