在Linux平台下编译运行如下代码即可获取到设备的MAC地址:
eg:编译命令 gcc -o example example.c
执行命令 ./example
#include <stdio.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/if_ether.h>
#include <net/if.h>
#include <linux/sockios.h>
void main()
{
char *device="eth0"; //teh0是网卡设备名
unsigned char macaddr[ETH_ALEN]; //ETH_ALEN(6)是MAC地址长度
//AF_INET = 1;
int i,s;
s = socket(AF_INET,SOCK_DGRAM,0); //建立套接口
struct ifreq req;
int err,rc;
rc = strcpy(req.ifr_name,device); //将设备名作为输入参数传入
err=ioctl(s,SIOCGIFHWADDR,&req); //执行取MAC地址操作
close(s);
if( err != -1 )
{
memcpy(macaddr,req.ifr_hwaddr.sa_data,ETH_ALEN); //取输出的MAC地址
for(i=0;i<ETH_ALEN;i++)
printf("%2x:",macaddr[i]);
}
printf("\r\n");
}