1

Windows 中有什么方法可以让进程枚举它正在使用的所有打开的端口/套接字?我试图在我的应用程序中追踪一些高端口使用情况,但我的应用程序使用很少,所以它必须是其他一些 DLL 被加载到进程中。

4

1 回答 1

3

Windows 自己的命令行netstat实用程序以及 SysInternals 的TCPView应用程序可以显示拥有每个打开端口的进程的名称。

如果您想以编程方式枚举此信息,则必须手动枚举 Windows 的端口路由表并将它们映射到您的进程。在 XP 上,您可以使用AllocateAndGetTcpExTableFromStack()AllocateAndGetUdpExTableFromStack()。在 Vista 及更高版本上,您可以使用GetExtendedTcpTable()andGetExtendedUdpTable()代替。两组函数都可以返回每个打开的 IP/端口的进程 ID,然后您可以将其与GetCurrentProcessId().

于 2012-09-19T19:53:54.683 回答