在 Windows 中有什么方法可以让进程枚举它正在使用的所有开放端口/套接字?我试图在我的应用程序中追踪一些高端口使用率,但我的应用程序使用的端口很少,所以一定是其他一些 DLL 被加载到进程中。
最佳答案
Windows 自己的命令行 netstat
实用程序,以及 SysInternals 的 TCPView app, 可以显示拥有每个开放端口的进程的名称。
如果您想以编程方式枚举此信息,则必须手动枚举 Windows 的端口路由表并将它们映射到您的进程。在 XP 上,您可以使用 AllocateAndGetTcpExTableFromStack()
和 AllocateAndGetUdpExTableFromStack()
.在 Vista 及更高版本上,您可以使用 GetExtendedTcpTable()
和 GetExtendedUdpTable()
反而。两组函数都可以返回每个打开的 IP/端口的进程 ID,然后您可以将其与 GetCurrentProcessId()
的结果进行比较.
关于windows - 枚举同一进程中的开放端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12500576/