【问题标题】:How to get Received & Sent Network Bytes per second For a process (input: process id or handle) in C++ for Windows?如何在 C++ for Windows 中获取每秒接收和发送的网络字节数对于进程(输入:进程 ID 或句柄)?
【发布时间】:2015-09-11 12:18:04
【问题描述】:

我需要像在资源监视器中一样获取每个进程的网络信息。我需要找到接收的字节/秒和发送的字节/秒。

我尝试使用 Win32_PerfRawData_PerfProc_Process 类来获取它。但它除了提供网络详细信息外,还提供 IO、文件字节数。

我尝试使用 Win32_PerfRawData_Tcpip_NetworkInterface 类获取详细信息。但它提供了每个网络接口的详细信息。

然后我尝试使用 GetTcpStatistics 函数。为此,已使用 MIB_IPSTATS。 MIB_IPSTATS 显示整个过程的累积结果。

  1. 是否有任何其他 MIB 结构可以按流程方式显示这些详细信息?
  2. 如何获取每个进程的 Bytes/s 事物,就像在 Win32_PerfRawData_Tcpip_NetworkInterface 中显示的资源监视器中一样,作为整个进程的累积数据
  3. 能否使用 Win32_PerfRawData_PerfProc_Process 类基于其他值计算 Bytes/s?
  4. 有没有像GetProcessMemoryInfo(这个方法是获取进程内存)这样的方法来获取每秒接收和发送的字节数?
  5. 还有其他计算方法吗?

【问题讨论】:

    标签: c++ windows


    【解决方案1】:

    您可以尝试查看性能计数器。

    https://msdn.microsoft.com/en-us/library/windows/desktop/aa373083(v=vs.85).aspx

    这是一个使用性能计数器获取网络速度的代码项目示例。它在 c# 中,但您应该能够翻译成 c++。

    http://www.codeproject.com/Articles/6259/Monitoring-network-speed'

    【讨论】:

    • 这些链接都不是“按进程”解决方案。进程级别的性能计数器仅显示 IO 常规,代码项目 C# 示例是在 NIC 级别进行监控
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多