2009-01-13 91 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的)來過濾流量,而不是寫你自己的設備驅動程序。