Windows 中有什么方法可以让进程枚举它正在使用的所有打开的端口/套接字?我试图在我的应用程序中追踪一些高端口使用情况,但我的应用程序使用很少,所以它必须是其他一些 DLL 被加载到进程中。
问问题
766 次
1 回答
3
Windows 自己的命令行netstat
实用程序以及 SysInternals 的TCPView应用程序可以显示拥有每个打开端口的进程的名称。
如果您想以编程方式枚举此信息,则必须手动枚举 Windows 的端口路由表并将它们映射到您的进程。在 XP 上,您可以使用AllocateAndGetTcpExTableFromStack()
和AllocateAndGetUdpExTableFromStack()
。在 Vista 及更高版本上,您可以使用GetExtendedTcpTable()
andGetExtendedUdpTable()
代替。两组函数都可以返回每个打开的 IP/端口的进程 ID,然后您可以将其与GetCurrentProcessId()
.
于 2012-09-19T19:53:54.683 回答