如何在C#中跟踪NIC活动?特别是端口入口/出口

时间:2012-05-27 18:16:16

标签: c# winapi networking bandwidth

我需要跟踪每个应用程序在C#中通过端口发送和接收的数据量。

要使用的API或.NET对象是什么?

1 个答案:

答案 0 :(得分:0)

性能监视器(perfmon)公开的数据可通过HKEY_PERFORMANCE_DATA随时供应用程序使用。但是,它不包含您需要的详细程度。

资源监视器(resmon)确实按进程显示网络活动(尽管不是通过端口),它使用Windows事件跟踪(ETW)。要在您的应用中重现resmon数据,您需要从ETW捕获事件并自行总结总数。我不知道跟踪数据是否包含足够的信息来按端口号分解总数,但如果没有,我会感到惊讶。 ETW数据通常非常详细。但是,我不相信在.Net中使用ETW数据有任何支持。 ETW可以以非常高速率生成事件,因此编写本机DLL以使用和聚合数据可能会更好。

更简单的选择是找到现有工具。这是一个starting point