【发布时间】:2019-11-06 21:49:55
【问题描述】:
给定一个套接字端口,如何在 Windows 10 上找到使用该端口的进程的进程 ID(进程名称)?我知道netstat 命令,但我只想用C 代码来做。
【问题讨论】:
标签: c
给定一个套接字端口,如何在 Windows 10 上找到使用该端口的进程的进程 ID(进程名称)?我知道netstat 命令,但我只想用C 代码来做。
【问题讨论】:
标签: c
那里怎么样,似乎有一种方法:IP Helper 库。
参考:https://docs.microsoft.com/en-us/windows/win32/iphlp/ip-helper-start-page
我没有用它来做这个,但它显然是在正确的道路上,它提供了你需要的一切,基本上是你自己的netstat.exe。
包含所有信息的低级对象是MIB_TCPROW2,它有本地和远程地址+端口,加上dwOwningPid。所以我们知道有办法。
深入研究,我们最终需要GetTcpTable2() 调用,而微软的网页很有帮助,似乎是功能齐全的 C 代码,可以自己完成所有这些工作。
https://docs.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-gettcptable2
发现这是我这一天最大的惊喜!
【讨论】:
netstat.exe 上使用了反汇编程序 (IDA Pro) 来了解 it 是如何做到的。导入表显示了一些有希望的功能,所以我然后去了必应。我们有了它。
GetTcpTable2返回的数组花费了太长时间,所以我打开了另一个问题:stackoverflow.com/questions/58749053/…我想找出每个通过的网络数据包的PID(每秒1000个)。