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

14

在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


你选择了哪一个,Mike? - Greg
4个回答

5
您可以使用WinPcap,或编写自己的设备驱动程序来完成此操作。我认为没有任何适用于单个进程的perfmon计数器可供利用。

5

[2021编辑:链接已失效,因为网络监视器在Windows XP之后被停用。]

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

Microsoft有一个免费应用程序叫做Microsoft Network Monitor 3.2下载)。根据发布说明,它还有一个可供使用的API。

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

这里有一篇关于这些API的博客文章

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


3

-1

4
为什么你给我的回答打-1并留下评论,你应该将这个评论放在问题上。 - grom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接