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