Информация Ethernet - PullRequest
       2

Информация Ethernet

2 голосов
/ 17 февраля 2011

Ну, я посмотрел на MSDN об этом, но нашел только это: GetAdaptersAddresses

И что я пытаюсь получить, это расширенная информация, такая как описание, отправленные байты, Полученных байт, пропускной способности, задержки и т. Д. Это возможно?

1 Ответ

1 голос
/ 17 февраля 2011

Вы можете получить большую часть этого с GetIfTable2 и GetIfEntry2.Если вам нужна совместимость с XP и более ранними версиями, вам нужно вместо этого взглянуть на GetIfTable и GetIfEntry.Функции *2 дают больше информации, но работают только в Vista и более новых версиях.

Я не верю, что оба будут показывать задержку - для этого вам в значительной степени необходимо провести измерения.Аналогично, пропускная способность будет просто номинальной пропускной способностью адаптера (например, 100 Мбит / с или 1000 Мбит / с), а не той, которую вы обязательно можете ожидать при взаимодействии с любым конкретным хостом.код, который я лежал, должен показать общее представление о том, как использовать эти функции:

#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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...