监控流程的网络使用情况?

时间:2009-01-13 07:47:20

标签: c# winapi network-monitoring

C#或C / C ++&有没有办法? Win32监视某个进程的网络使用情况(显然你没有构建该应用程序)?我想监视一个小时左右的1个进程,然后返回仅由该进程使用的字节,例如limewire。

有可能吗?我知道windows上的netstat -e会告诉你发送/接收的总字节数,但这适用于所有进程。

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

例如:

netstat -e

                           Received            Sent

Bytes                    2111568926      1133174989
Unicast packets             3016480         2711006
Non-unicast packets            3122            1100
Discards                          0               0
Errors                            0               0
Unknown protocols                 0

我只想得到2个变量,如rec = 2111568926和sent = 1133174989

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:5)

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

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

  

Network Monitor API:创建自己的API   捕获,解析和的应用程序   分析网络流量!

Here is a blog post about these API's

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

答案 2 :(得分:3)

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

答案 3 :(得分:-1)

NetLimiter 2 Limiter

Network Traffic Monitor 您可以从here

获取最后一个免费软件版本