如何用C语言获取网卡的mac地址?(当然,你也可以用类似方法获取所有ip)

来源:互联网 发布:nba2k16卡顿优化补丁 编辑:程序博客网 时间:2024/06/10 21:16

       在实际项目中,常常需要获取网卡的mac地址,下面,用C语言来做(注意:你很可能没法直接编译运行下面程序,原因和解决办法见博文最后的说明):

#include <stdio.h>#include <winsock2.h>#include <iphlpapi.h>#pragma comment(lib, "iphlpapi.lib")int main(){int i = 0;int ret = 0;    unsigned long size = 0;    PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();    ret = GetAdaptersInfo(pIpAdapterInfo,&size);    if (ERROR_BUFFER_OVERFLOW == ret)    {        delete pIpAdapterInfo;        pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[size];        ret = GetAdaptersInfo(pIpAdapterInfo, &size);        }    if (ERROR_SUCCESS == ret)    {while (pIpAdapterInfo) //  每个网卡对应一个链表结点{for (i = 0; i < pIpAdapterInfo->AddressLength; i++){if (i < pIpAdapterInfo->AddressLength - 1){printf("%02X-", pIpAdapterInfo->Address[i]);}else{printf("%02X\n", pIpAdapterInfo->Address[i]);}}pIpAdapterInfo = pIpAdapterInfo->Next;}    }    if (pIpAdapterInfo)    {        delete pIpAdapterInfo;pIpAdapterInfo = NULL;    }    return 0;}

     结果打出了两个网卡的地址(我的笔记本上有两个网卡,有线网卡和无线网卡)。

 

     注意:当你编译运行上述程序时,通常会不成功,因为你很有可能缺少相应的头文件和静态库,请在你安装VC++6.0的对应目录中加上相应文件,这些文件分别是:

     当然,请不要把这些文件都放在同一目录下,.h文件和.lib文件要区分开来。你可以在网上下载到这些文件,也可以在我的csdn博客资源中下载,不需要你的任何积分。


 

原创粉丝点击