我需要在 C# 中跟踪每个应用程序通过端口发送和接收的数据量。
要使用的正确 API 或 .NET 对象是什么?
性能监视器 ( perfmon
) 公开的数据可通过 HKEY_PERFORMANCE_DATA 轻松提供给应用程序。但是,它不包含您需要的详细程度。
资源监视器 ( resmon
) 确实按进程(尽管不是按端口)显示网络活动,并且它使用 Windows 事件跟踪 (ETW)。要在您的应用程序中重现resmon
数据,您需要从 ETW 捕获事件并自己总结总数。我不知道跟踪数据是否包含足够的信息来按端口号分解总数,但如果没有,我会感到惊讶。ETW 数据通常非常详细。但是,我不相信在 .Net 中使用 ETW 数据有任何支持。ETW 可以以非常高的速率生成事件,因此编写本机 DLL 来使用和聚合数据可能会更好。
一个更简单的选择是找到现有的工具。这是一个起点。