2017-06-22 108 views
1

我正在寻找一种方式来获得的作为资源监视器信息列表下的窗口一样,如: enter image description here 我想知道地址和的中发送接收使用选定的应用程序。

在开始时我正在寻找一个C++ win32 api或其他开源库来做到这一点,我可以找到像GetProcessInformation之类的东西,但它不包含网络信息。

我看到一些类似的话题,但他们没有帮助。
Ref_001,看来网络监视器API不能做特定于应用程序的监视器。
Ref_002,我不知道是否OpenTrace/ProcessTrace/StopTrace可以让我的网络使用或不我也不知道如何使用它。
Ref_003,他们提出了一些工具,但它不是我想要的。如何监控windows下的过程网络使用

回答

2

Windows为您提供了两个部分的信息,这些信息来自不同的功能,您需要整理才能获得完整的故事。从技术上讲,它有三个功能:对于数据的第二部分,IPv4和IPv6数据分别具有不同的功能。第一个功能是GetExtendedTcpTable。要获得上述所有信息,您可能需要调用此(至少)两次:一次使用TCP_TABLE_OWNER_PID_CONNECTIONS标志,一次使用TCP_TABLE_OWNER_MODULE_CONNECTIONS标志检索本地可执行文件的PID和模块名称。

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

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

+0

非常感谢,我会试试看 – sflee