How can I access netstat-like Ethernet statistics from a Windows program

前端 未结 7 1960
臣服心动
臣服心动 2020-12-03 16:11

How can I access Ethernet statistics from C/C++ code like netstat -e?

Interface Statistics

                       Received            Sent
         


        
相关标签:
7条回答
  • 2020-12-03 16:36

    You might find a feasable WMI performance counter, e.g. Win32_PerfRawData_Tcpip_NetworkInterface.

    0 讨论(0)
  • 2020-12-03 16:38

    A good place to start for network statistics would be the GetIpStatistics call in the Windows IPHelper functions.

    There are a couple of other approaches that are possibly more portable:-

    • SNMP. Requires SNMP to be enabled on the computer, but can obviously be used to retrieve statistics for remote computers also.
    • Pipe the output of 'netstat' into your application, and unpick the values from the text.
    0 讨论(0)
  • 2020-12-03 16:38

    As above answers suggest, WMI performance counters contains some data. Just be aware that in later versions of windows the perf counters are broken down in v4 vs v6 so the queries are:

    SELECT * FROM Win32_PerfFormattedData_Tcpip_IPv4

    SELECT * FROM Win32_PerfFormattedData_Tcpip_TCPv4

    SELECT * FROM Win32_PerfFormattedData_Tcpip_UDPv4

    SELECT * FROM Win32_PerfFormattedData_Tcpip_ICMP

    SELECT * FROM Win32_PerfFormattedData_Tcpip_IPv6

    SELECT * FROM Win32_PerfFormattedData_Tcpip_TCPv6

    SELECT * FROM Win32_PerfFormattedData_Tcpip_UDPv6

    SELECT * FROM Win32_PerfFormattedData_Tcpip_ICMPv6

    0 讨论(0)
  • 2020-12-03 16:45

    The WMI will provide those readings:

    SELECT * FROM Win32_PerfFormattedData_Tcpip_IP
    SELECT * FROM Win32_PerfFormattedData_Tcpip_TCP
    SELECT * FROM Win32_PerfFormattedData_Tcpip_UDP
    SELECT * FROM Win32_PerfFormattedData_Tcpip_ICMP
    SELECT * FROM Win32_PerfFormattedData_Tcpip_Networkinterface
    

    These classes are available on Windows XP or newer. You may have to resign to the matching "Win32_PerfRawData" classes on Windows 2000, and do a little bit more of math before you can display the output.

    Find documentation on all of them in the MSDN.

    0 讨论(0)
  • 2020-12-03 16:47

    See Google Groups, original netstats source code has been posted many times (win32 api)

    0 讨论(0)
  • 2020-12-03 16:50

    Szia,

    from http://en.wikipedia.org/wiki/Netstat

    On the Windows platform, netstat information can be retrieved by calling the GetTcpTable and GetUdpTable functions in the IP Helper API, or IPHLPAPI.DLL. Information returned includes local and remote IP addresses, local and remote ports, and (for GetTcpTable) TCP status codes. In addition to the command-line netstat.exe tool that ships with Windows, there are GUI-based netstat programs available. On the Windows platform, this command is available only if the Internet Protocol (TCP/IP) protocol is installed as a component in the properties of a network adapter in Network Connections.

    MFC sample at CodeProject: http://www.codeproject.com/KB/applications/wnetstat.aspx

    0 讨论(0)
提交回复
热议问题