【问题标题】:Monitor a process's network usage?监控进程的网络使用情况?
【发布时间】:2010-10-01 02:17:12
【问题描述】:

在 C# 或 C/C++ 和 Win32 中是否有办法监控某个进程的网络使用情况(显然您没有构建该应用程序)?我想只监视一个进程大约一个小时,然后返回仅由该进程使用的字节,例如limewire。

有可能吗?我知道 Windows 上的 netstat -e 会告诉您发送/接收的总字节数,但这是针对所有进程的。

编辑:如果我不能只返回一个进程的使用情况,我怎样才能得到整个系统发送/接收的字节数?正如 netstat 显示的那样,除了我只想要整数。

例如:

网络状态 -e 收到 发送 字节 2111568926 1133174989 单播数据包 3016480 2711006 非单播数据包 3122 1100 丢弃 0 0 错误 0 0 未知协议 0

我只想获取 2 个变量,例如 rec = 2111568926 和 sent = 1133174989

【问题讨论】:

  • 你为迈克选择了哪一个?

标签: c# winapi network-monitoring


【解决方案1】:

您可以为此使用WinPcap 或编写您自己的设备驱动程序。我不认为您可以利用任何每个进程的 perfmon 计数器。

【讨论】:

    【解决方案2】:

    [ 2021 年编辑:由于网络监视器在 Windows XP 之后停止使用,因此链接已失效。 ]

    这是可能的,但如果我没记错的话,你必须创建一个网络驱动程序来过滤所有网络流量,然后找出哪个进程创建了流量。

    Microsoft 有一个免费的应用程序,名为Microsoft Network Monitor 3.2 (download)。根据发行说明,它还有一个可供使用的 api。

    网络监视器 API:创建您自己的 捕获、解析和 分析网络流量!

    Here is a blog post about these API's.

    在我看来,您应该使用此 API(或其他 API,例如 WinPcap)来过滤流量,而不是编写自己的设备驱动程序。

    【讨论】:

      【解决方案3】:

      我在 MSDN 论坛上问了同样的问题并得到了答案。坦白说已经试过了。 IE。试过但没那么难))建议使用ETW。我没有意识到如何正确使用 ETW 事件。 http://social.msdn.microsoft.com/Forums/en-US/perfmon/thread/b82da95a-1c18-49ce-9bfa-e3d79ec40907

      【讨论】:

        【解决方案4】:

        NetLimiter 2 Limiter

        Network Traffic Monitor 您可以从here获取最新的免费软件版本

        【讨论】:

        • 你为什么是-1并对我的回答发表评论。你应该把这个放在这个问题上。
        猜你喜欢
        • 2015-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多