好吧,我在MSDN上看过这个只发现了这个:GetAdaptersAddresses
我想要获得的是以太网信息,例如描述,发送的字节数,接收的字节数,带宽,延迟等等。这可能吗?
答案 0 :(得分:1)
您可以使用GetIfTable2
和GetIfEntry2
获得大部分内容。如果您需要与XP及更早版本兼容,则需要查看GetIfTable
和GetIfEntry
。 *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;
}