由网络活动进程获取的已接收和已发送字节

问题描述 投票:6回答:1

这是我上一个question的下一步。


我正在创建一个C#WinForm应用程序,该应用程序将显示给定进程(例如,进程名称为chrome.exe)的网络活动(接收的字节数/发送的字节数)和该进程生成的兆位/秒的速度。 >

虽然使用性能计数器IO Read Bytes/secIO Read Bytes/sec显示I / O读取和写入字节,而不是'发送和接收字节'

PS:I / O计数由进程生成的所有文件,网络和设备I / O字节。但是,我只希望由特定进程生成的网络字节。

我只想检索已接收的字节和已发送的字节。但是,不知道使用什么计数器来获取进程的这些字节。

我已经为此目的搜索了这些链接,但没有用:

PerformanceCounter bytesReceived = new PerformanceCounter("Process", "IO Read Bytes/sec");
PerformanceCounter bytesSent = new PerformanceCounter("Process", "IO Write Bytes/sec");
string ProcessName = "chrome";
bytesReceived.InstanceName = ProcessName;
bytesSent.InstanceName = ProcessName;

问题:

如何仅获取由进程为网络活动生成的已接收和已发送字节。

这是我上一个问题的下一步。我正在创建一个C#WinForm应用程序,该应用程序将显示给定进程的网络活动(接收的字节数/发送的字节数)(例如:进程名称的...

c# .net process performancecounter
1个回答
4
投票

正如评论中已经提到的,我不相信有一种方法可以使用PerformanceCounter类来实现。由于它使用Windows的内置性能计数器,因此可以通过使用typeperf命令查询已安装计数器的整个列表来进行验证。在我的本地计算机上,这产生了大约3.200个不同的计数器,我通过这些计数器来验证我的主张。实际上,有typeperf个计数器用于网络发送/接收(即使对于特定的网络接口/适配器或处理器),但是它们都不能针对特定的进程或进程系列进行过滤。

© www.soinside.com 2019 - 2024. All rights reserved.