cae*_*say 5 c# windows networking netstat iphelper
我需要确定与TCPView可以做的类似的每进程网络使用情况统计信息.
示例http://img513.imageshack.us/img513/861/6601f15814544055a590e26.png
因此,在你拍我发布这个问题的副本或者这个问题之前,我想指出的是,这些问题都没有一个彻底的答案可以帮助我实际做到这一点.
我一直在做研究,很明显有许多方法可以列出活动连接及其相关进程,无论是netstat还是其他Windows API,如IpHlpAPI.dll.
现在,从谷歌的做法来看,我没有找到太多 - 除了这些模糊的术语:GetPerTcpConnectionEStats和GetPerTcp6ConnectionEStats.大概分别用于TCP over IPv4和IPv6.现在我正在阅读它所谓的能够做我需要做的事情.但是,这仍然留下了UDP.这些也不适用于TCPViewer工作的XP系统.
我会对使用TCP的那些感到满意,但问题是,我似乎无法找到如何从C#中使用它们的任何示例.
所以我想这一切归结为这几个问题:
这一点的全部意义在于查看进程本身的独立带宽使用情况.不计算系统总带宽使用情况.
提前感谢任何和所有答案.
我花了一些时间试图弄清楚如何做类似的事情(延迟与带宽),但由于缺乏时间投资而不得不放弃。我想我应该在这里添加我的发现,希望我们最终能得到答案。
显然,您需要使用 PInvoke,但具体细节恐怕远远超出了我的使用经验。
CodeProject 上的这个包装器库使用AllocateAndGetTcpExTableFromStack,它仅适用于 Windows XP 和 Server 2003。尽管抱歉,它仍然无法为您提供带宽。
我能找到的最接近的信息作为起点(对于 Vista/Server 2008 或更高版本)是 pinvoke.net 上的GetExtendedTcpTable示例。
PInvoke Interop Assistant工具可能有助于确定如何调用非托管代码。
如果我继续尝试这个,我会尝试找出以下内容: