【发布时间】:2010-10-23 14:41:59
【问题描述】:
我需要计算各种应用程序从网络发送和接收的字节数。一开始我考虑使用 LSP,但是有很多应用程序根本不使用 LSP(例如 SMB)。这就是我写一个小嗅探器的原因。此应用程序在 IP 级别上工作,并使用 recvfrom 收集数据。
所以我有远程主机、本地和远程端口的地址。这很酷,但我还需要本地套接字所有者的 PID。那么,有没有简单的方法来获得这样的PID呢?解决方法是使用 GetTcpTable、GetUdpTable 或 AllocateAndGetUdpExTableFromStack 和 AllocateAndGetTcpExTableFromStack(这些函数在 2k、XP、XP SP2 和 Vista 之间存在很多差异)并查找结果表,但这似乎不优雅且效率低下...
那么有什么“GetPIDOfSocket”函数吗?由于可以使用各种语言,例如 C++、Delphi,因此只能使用 WinAPI(无 .net)解决方案。
【问题讨论】:
-
您似乎是最近才加入的,请允许我给您一个提示:提供您使用的编程语言通常会有所帮助。你仍然有一个空的标签槽来填充它:)
标签: c++ winapi sockets winsock pid