您的位置:首页 > 编程语言 > C语言/C++

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

2013-10-19 00:29 841 查看
       在实际项目中,常常需要获取网卡的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博客资源中下载,不需要你的任何积分。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: