确定现有连接是否在Windows下使用TCP KeepAlive

时间:2013-03-07 23:10:22

标签: windows winsock keep-alive

在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数据包),但它们都具有不确定性。此外,我们谈论的是很多服务器和很多应用程序。

1 个答案:

答案 0 :(得分:0)

使用WireShark查看TCP Keepalive数据包。如果你需要检查环回,就像我使用https://github.com/nmap/npcap

一样