netstat如何知道接收和发送的字节数?

时间:2016-07-04 13:02:00

标签: c winapi networking netstat

我想创建一个显示下载和上传的字节数的简单应用程序。我注意到netstat就是这样(当使用-e开关时):

enter image description here

netstat如何知道此信息,它是否称为Windows API函数?

2 个答案:

答案 0 :(得分:4)

Netstat使用 1 IP Helper API,这是Core Windows网络API的一部分。在netstat上运行dumpbin /imports会产生:(为了简洁而剪断)

IPHLPAPI.DLL
         140007000 Import Address Table
         1400080A0 Import Name Table
                 0 time date stamp
                 0 Index of first forwarder reference

                      A3 InternalGetBoundTcp6EndpointTable
                      A4 InternalGetBoundTcpEndpointTable
                      C2 InternalGetUdpTableWithOwnerModule
                      B5 InternalGetTcp6Table2
                      B9 InternalGetTcpTable2
                      B6 InternalGetTcp6TableWithOwnerModule
                      BB InternalGetTcpTableWithOwnerModule
                      BE InternalGetUdp6TableWithOwnerModule
                      80 GetUdpStatisticsEx
                      64 GetIpStatisticsEx
                      4D GetIcmpStatisticsEx
                      7A GetTcpStatisticsEx

最后4个IP帮助程序功能是您感兴趣的功能。GetUdpStatisticsExGetIpStatisticsExGetIcmpStatisticsExGetTcpStatisticsEx

1 这是该问题的最有可能的答案,但为了完整性,netstat还会导入它可能用于生成的QueryPerformanceCounter输出。如果没有netstat的源代码,就无法100%确定地知道。

答案 1 :(得分:0)

每个接口发送和接收的八位字节数可以通过GetIfTable()获得。请参阅MIB_IFROW中的dwInOctetsdwOutOctets