windows - 枚举同一进程中的开放端口

标签 windows winapi sockets tcp port

在 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/

相关文章:

sql-server - 如何使用 INSERT INTO OPENROWSET 导出到 Excel 而无需成为目标服务器上的管理员

windows - 支持 IAccessible 接口(interface)以在文本编辑器中移动插入符号的正确解决方案是什么?

c++ - 结构的互锁交换

winapi - 使用masm(汇编代码)向控制台编写简单的字符串

java - 为什么在 while 循环中重复调用 java tcp 套接字时不发送所有数据?

C++ WinSock2 等待客户端发送数据

javascript - 如何在事件上使用带有 Socket.IO 的 RxJs

windows - 用于在同一项目上使用 Windows 和 Linux 的 eclipse 字符集

java - 是否可以在 JFrame 边框上添加菜单?

c++ - 尝试执行任何需要它时无法修复 WinAPI 中的 "invalid handle"错误