2009-01-13 51 views
12

有没有在C#或C/C++ &的Win32的方式监视某一进程的网络使用(如果没有申请,而你明明建)?我想只监视一个进程大约一个小时左右,然后返回仅用于该进程的字节,例如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并派出= 1133174989

+0

你去哪个迈克? – Greg 2010-07-08 05:52:48

回答

5

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

5

这是可能的,但如果我没有记错,你必须创建一个网络驱动程序来过滤所有网络流量,比找出哪些过程中产生的流量。

微软有一个免费的应用程序为它叫做Microsoft Network Monitor 3.2download)。根据发行说明,它也有一个API使用。

网络监视器API:创建自己的应用程序 捕获,分析和 分析网络流量!

Here is a blog post about these API's

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