c++ - windows下如何监控进程网络使用情况

标签 c++ windows mfc

我正在寻找一种像windows下的Resource Monitor那样获取信息列表的方法,比如: enter image description here 我想知道所选应用程序的地址以及发送接收的使用量。

一开始我正在寻找 C++ win32 api 或其他开源库来执行此操作,我可以找到类似 GetProcessInformation 的东西。但不包含网络信息。

我看到了一些类似的主题,但没有帮助。
Ref_001 , 似乎网络监控 api 不能做应用程序特定的监控。
Ref_002 ,我不确定 OpenTrace/ProcessTrace/StopTrace 是否可以获取网络使用情况,我也不确定如何使用它。
Ref_003 , 他们建议使用一些工具,但这不是我想要的。

最佳答案

Windows 为您提供了来自不同功能的两个部分的此信息,您需要将这些信息放在一起才能获得完整的故事。嗯,从技术上讲,它是三个函数:对于数据的第二部分,IPv4 和 IPv6 数据有单独的函数。

第一个函数是GetExtendedTcpTable .要获得上述所有信息,您可能需要(至少)调用此方法两次:一次使用 TCP_TABLE_OWNER_PID_CONNECTIONS 标志,一次使用 TCP_TABLE_OWNER_MODULE_CONNECTIONS 标志来检索两者本地可执行文件的 PID 和模块名称。

第二对为您提供有关在特定连接上发送/接收的数据的统计信息。每个连接都由本地地址/端口和远程地址端口的组合标识(与上面使用的相同)。您使用 GetPerTcpConnectionEStats 检索信息对于 IPv4 或 GetPerTcp6ConnectionEStats用于 IPv6。

其中任何一个都将检索一个表,表中的每一行都包含一个连接的统计信息。如果您(例如)在浏览器中打开了多个选项卡,可以选择单独显示每个连接的数据,或者您可以根据需要合并它们。

关于c++ - windows下如何监控进程网络使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44689482/

相关文章:

c++ - 将什么传递给 H.264 传输流的 avcodec_decode_video2?

c++ - 讨厌的 unicode 和 C++ : Easy way to read ASCII/UTF-8/UTF-16 BE/LE text file

c++ - 在 Windows Mobile 上使用 native 代码读取文件时出错

pdf - 从 MFC MDI CView 生成 PDF 页面

c++ - 为什么 std::function 实例有默认构造函数?

c++ - 'WCHAR* 类型的参数与 "const char*"不兼容'

windows - 如何制作一个文本文件,其中包含给定扩展名的所有文件的路径?

android - 在 Windows 7 上安装没有管理员权限的 Android Studio 软件

c# - UIWebView 中的 Windows 身份验证 url 没有响应,没有错误,请求无限期旋转 - Xamarin.iOS

c++ - 使用 DrawIcon 绘制的 .ico 文件看起来有误