如何获取网卡相关信息(包括mac, ip, mask, gateway等)?---利用GetAdaptersInfo

来源:互联网 发布:jansport淘宝 编辑:程序博客网 时间:2024/05/16 15:06

      本文中, 我们来看看如何利用GetAdaptersInfo获取与网卡相关的一些信息。 如果你在运行的时候缺头文件或者库, 请到网上下载, 也可以直接在我的博客资源中下载, 免积分。其实, 这个函数中的Adapter就是指网卡。

      好, 上代码(为了简便,不考虑各种异常):

#include <stdio.h> #include <winsock2.h> #include <iphlpapi.h> // 如果没有这个, 请在我的博客资源中下载#pragma comment(lib, "iphlpapi.lib") int main(){unsigned long len = sizeof(IP_ADAPTER_INFO);IP_ADAPTER_INFO *pAdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));GetAdaptersInfo(pAdapterInfo, &len); // 获取链表指针值的关键函数PIP_ADAPTER_INFO pAdapter = pAdapterInfo;while(pAdapter) // 遍历链表{printf("NIC: %s\n", pAdapter->AdapterName);printf("NIC info: %s\n", pAdapter->Description);printf("\n");printf("MAC: ");unsigned int i = 0; // 不用int, 是为了去掉编译warningfor(i = 0; i < pAdapter->AddressLength; i++){if(i == (pAdapter->AddressLength - 1)){printf("%.2X\n", (int)pAdapter->Address[i]);}else{printf("%.2X:", (int)pAdapter->Address[i]);}}printf("IP: %s\n", pAdapter->IpAddressList.IpAddress.String);printf("Mask: %s\n", pAdapter->IpAddressList.IpMask.String);printf("Gateway: %s\n", pAdapter->GatewayList.IpAddress.String);printf("\n");if(pAdapter->DhcpEnabled){printf("DHCP: YES\n");printf("DHCP Server: %s\n", pAdapter->DhcpServer.IpAddress.String);}else{printf("DHCP: NO\n");}pAdapter = pAdapter->Next; // 下一个网卡}free(pAdapterInfo);printf("\n");return 0;}

     结果是(我用xx代替了部分信息):
NIC: {xxxxxxxxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxxxx}
NIC info: Dell Wireless 1395 WLAN Mini-Card - 数据包计划程序微型端口


MAC: xx:xx:xx:xx:xx:xx
IP: 192.168.1.100
Mask: 255.255.255.0
Gateway: 192.168.1.1


DHCP: YES
DHCP Server: 192.168.1.1


      如果把我PC的无线网络关闭, 那又是另外一种结果, 有兴趣的朋友赶紧试试吧。


      备注: 上面的网卡是正在运行的网卡, 而不是所有的网卡。




0 0
原创粉丝点击