2016-07-04 21 views
1

Ich möchte eine einfache Anwendung erstellen, die die Anzahl der heruntergeladenen und hochgeladenen Bytes anzeigt. Ich bemerkte, dass netstat nicht nur, dass (bei den -e Schalter):Wie kennt netstat die Anzahl der empfangenen und gesendeten Bytes?

enter image description here

Wie funktioniert netstat diese Informationen kennt, ist es eine Windows-API-Funktion oder etwas nennen?

+0

Sie stellen zwei Fragen: '1' Wie Sie die Netzwerkstatistiken pro Adapter abrufen können. '2' Wie wird * netstat * implementiert? Welchen fragst du wirklich? Der Fragetitel schlägt "2" vor, der Fragekörper deutet auf "1" und "2". – IInspectable

Antwort

4

Netstat verwendet die IP Helper API, die ein Teil der Core Windows-Netzwerk-API ist. Laufen dumpbin /imports auf netstat erzeugt: (der Kürze halber snipped)

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 

Die letzten 4 IP Helper-Funktionen sind die, die Sie interessiert sind GetUdpStatisticsEx, GetIpStatisticsEx, GetIcmpStatisticsEx und GetTcpStatisticsEx


1. Dies ist die am wahrscheinlichsten Antwort auf die Frage, aber aus Gründen der Vollständigkeit importiert Netstat auch QueryPerformanceCounter, die es zu prod verwenden könnte uce die Ausgabe. Ohne den Quellcode von netstat gibt es keine Möglichkeit, dies mit 100% Sicherheit zu wissen.

0

Die Anzahl der gesendeten und empfangenen Oktette pro Schnittstelle kann über GetIfTable() abgerufen werden. Siehe dwInOctets und dwOutOctets von MIB_IFROW.