如何用C语言获取网卡的mac地址?(当然,你也可以用类似方法获取所有ip)
2013-10-19 00:29
841 查看
在实际项目中,常常需要获取网卡的mac地址,下面,用C语言来做(注意:你很可能没法直接编译运行下面程序,原因和解决办法见博文最后的说明):
结果打出了两个网卡的地址(我的笔记本上有两个网卡,有线网卡和无线网卡)。
注意:当你编译运行上述程序时,通常会不成功,因为你很有可能缺少相应的头文件和静态库,请在你安装VC++6.0的对应目录中加上相应文件,这些文件分别是:
当然,请不要把这些文件都放在同一目录下,.h文件和.lib文件要区分开来。你可以在网上下载到这些文件,也可以在我的csdn博客资源中下载,不需要你的任何积分。
#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博客资源中下载,不需要你的任何积分。
相关文章推荐
- linux下获取所有网卡mac地址(C语言)
- IE下通过javascript如何获取本地网卡IP,MAC地址,计算机名
- Objective-c语言_用字符串方法和数组如何获取物理IP地址
- 如何用C语言获得本机IP地址?(获取一个ip或者获取所有ip)
- 获取本机所有网卡的网卡名、网卡描述、网卡MAC地址、网卡IP、网卡类型等信息及网线是否插入状态
- java获取登陆用户ip和mac地址的方法
- 如何在CentOS中把网卡设置成动态获取IP
- Centos 7开启网卡自动获取IP的详细方法
- 获取客户端网卡MAC地址的几种方法
- Linux下C语言获取所有网卡MAC地址的代码
- 获取客户端网卡MAC地址和IP地址的几种方法
- 如何获取客户端MAC地址(三个方法)
- 获取客户端ip和mac地址的方法总结
- 获取MAC地址的两种方法,一种可以跨vlan取得MAC
- 两种socket获取本机IP地址方法及获取ip对应网卡
- 获取客户端网卡MAC地址的几种方法
- 获取客户端网卡MAC地址的几种方法
- 如何获取zabbix以监控的所有机器IP
- ubuntu系统更改网卡mac地址及安装双网卡(双IP)的方法
- 用C#获取局域网内所有IP方法研究