14

在 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

4

4 回答 4

5

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

于 2009-01-13T08:02:20.643 回答
5

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

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

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

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

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

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

于 2009-01-13T08:08:29.570 回答
3

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

于 2012-04-12T11:38:54.847 回答
-2

NetLimiter 2 限制器

网络流量监视器您可以从这里 获取最新的免费软件版本

于 2009-01-13T09:38:55.270 回答