【问题标题】:Ethernet Information以太网信息
【发布时间】:2011-02-16 22:10:12
【问题描述】:

嗯,我在 MSDN 上查看过这个,只发现了这个:GetAdaptersAddresses

我想要获取的是以太网信息,例如描述、发送的字节数、接收的字节数、带宽、延迟等。这可能吗?

【问题讨论】:

    标签: c++ windows networking


    【解决方案1】:

    您可以通过GetIfTable2GetIfEntry2 获得大部分信息。如果您需要与 XP 和更早版本的兼容性,则需要查看 GetIfTableGetIfEntry*2 函数提供更多信息,但仅适用于 Vista 和更新版本。

    我不相信两者都会显示延迟 - 因为您几乎需要进行一些测量。同样,带宽只是适配器的额定带宽(例如 100 Mb/s 或 1000 Mb/s),而不是您在与任何特定主机通信时所期望的带宽。

    编辑:这里有一些代码,应该显示如何使用这些函数的一般概念:

    #include <windows.h>
    #include <iphlpapi.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    int main() { 
    
        MIB_IFTABLE *interfaces;
        unsigned long size = 0;
        int i, j;
    
        GetIfTable(interfaces, &size, FALSE);
    
        interfaces = (MIB_IFTABLE *)malloc(size);
    
        GetIfTable(interfaces, &size, TRUE);
    
        for (i=0; i<interfaces->dwNumEntries; i++) {
            MIB_IFROW &xf = interfaces->table[i];
    
            printf("%s\n\t", xf.bDescr);
            for (j=0; j<xf.dwPhysAddrLen; j++) {
                printf("%2.2X", xf.bPhysAddr[j]);
                if ( j!= xf.dwPhysAddrLen-1)
                    printf(":");
            }
            printf("\n");
            switch(xf.dwType) {
            case MIB_IF_TYPE_ETHERNET:
                printf("Ethernet");
                break;
            case MIB_IF_TYPE_FDDI:
                printf("FDDI");
                break;
            case MIB_IF_TYPE_TOKENRING:
                printf("Token Ring");
                break;
            case MIB_IF_TYPE_LOOPBACK:
                printf("Loopback adapter");
                break;
            case MIB_IF_TYPE_OTHER:
                printf("Other");
                break;
            }
            printf("\n");
        }
        return 0;
    }
    

    【讨论】:

    • 好的,我得到了这个的一部分。但我不明白它们是如何工作的。 :/ 有时他们解释错了,或者是我不明白。 :(
    猜你喜欢
    • 1970-01-01
    • 2018-08-28
    • 2021-12-22
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    相关资源
    最近更新 更多