【发布时间】:2012-05-18 15:06:23
【问题描述】:
我需要像 TCPView 一样确定每个进程的网络使用统计信息。
Example http://img513.imageshack.us/img513/861/6601f15814544055a590e26.png
因此,在你因为我发布了 this question 或 this question 的重复而对我开枪之前,我想指出,他们都没有一个可以帮助我真正做到这一点的彻底答案。
我一直在做研究,显然有很多方法可以列出活动连接及其相关进程,无论是使用 netstat 还是其他 Windows API,如 IpHlpAPI.dll。
现在,根据我所做的谷歌搜索,我没有找到太多信息 - 除了这些模糊的术语:GetPerTcpConnectionEStats 和 GetPerTcp6ConnectionEStats。大概分别用于 IPv4 和 IPv6 上的 TCP。现在我正在阅读它应该能够做我需要做的事情。但是,这仍然忽略了 UDP。这些在 TCPViewer 工作的 XP 系统上也不可用。
我会很满意将它们用于 TCP,但问题是,我似乎找不到任何如何从 C# 中使用它们的示例。
所以我想这一切都归结为以下几个问题:
- 真的有人知道 TCPView 是怎么做的吗?
- 如何为 TCP 使用 GetPerTcpConnectionEStats?或者它甚至可以完成我的建议吗?
- 是否有其他已知的替代方案适用于 UDP?
这样做的重点是查看进程本身的独立带宽使用情况。不计算总系统带宽使用量。
提前感谢您的任何和所有答案。
【问题讨论】:
-
您很可能可以通过 WMI / 性能计数器来执行此操作,但是我个人认为这些 API 相当晦涩……以防万一您没有得到好的答案并正在寻找更多的关键字来谷歌。
-
有什么解决办法吗?
-
@TomerPeled:我从来没有找到解决方案,所以放弃了这个项目(因为它是个人的)。如果您确实知道如何确定单个进程的带宽使用情况,请将其作为答案发布,它可能会激发我完成旧项目的动力:)
标签: c# windows networking netstat iphelper