1

我需要通过每个正在运行的程序/进程计算我的 PC 发送和接收的数据量(以 B/kB/MB/为单位)。

假设我单击“开始计数”,然后从那一刻直到我选择“停止”,我得到了浏览器、FTP 客户端、系统实现等发送/接收的所有内容的总和。

为了简单起见,我只想计算通过 TCP 传输的数据——如果重要的话。

现在,我得到了 PC 中 NIC 的组合列表(基于下面链接中的评论)。我试图更改此处给出的代码,但失败了,在 dataSent/dataReceived 中得到了奇怪的值。

我还阅读了问题442409的答案,但我可以看到它是关于同一程序发送/接收的数据,这不符合我的要求。

4

2 回答 2

2

Perfmon 应该有你想做的这类事情的计数器,所以先看看那里。

于 2010-01-21T15:27:37.863 回答
0

好吧,我想我已经找到了解决方案,但也许有人会提出更好的建议......

我制作了计时器(以 10 毫秒的间隔对其进行了测试),它获取“接收的字节数/秒”PerformanceCounter 值并将其添加到全局“临时”变量中,并增加总和计数器(如果有任何滞后)。然后我制作了第二个间隔为 1 秒的计时器,它获取值的总和(来自临时总和),将其除以计数器并添加到总量(也是全局的)。然后它重置临时总和和计数器。

我只是不确定它是否是正确的方法,因为我不知道“Bytes Received/sec”PerformanceCounter 的变量在一秒钟内如何变化。也许我应该制作某种直方图并获得平均值?

目前,下载 8.6MB 的文件给了我 9.2MB 的总量——其他进程是否有可能在不到 20 秒的时间内产生这么多的净活动?

于 2010-01-26T12:58:18.943 回答