怎样获取和设置本地网络MAC地址呢?
方法一
int macAddrSet(UINT8* mac)
{
struct ifreq temp;
struct sockaddr* addr;
int fd = 0;
int ret = -1;
if((0 != getuid()) && (0 != geteuid()))
return -1;
if((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
return -1;
}
strcpy(temp.ifr_name, "eth0");
addr = (struct sockaddr*)&temp.ifr_hwaddr;
addr->sa_family = ARPHRD_ETHER;
memcpy(addr->sa_data, mac, 6);
ret = ioctl(fd, SIOCSIFHWADDR, &temp);
close(fd);
return ret;
}
int macAddrGet(UINT8* mac)
{
struct ifreq temp;
struct sockaddr* addr;
int fd = 0;
int ret = -1;
if((0 != getuid()) && (0 != geteuid()))
return -1;
if((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
return -1;
}
strcpy(temp.ifr_name, "eth0");
addr = (struct sockaddr*)&temp.ifr_hwaddr;
addr->sa_family = ARPHRD_ETHER;
ret = ioctl(fd, SIOCGIFHWADDR, &temp);
close(fd);
if(ret < 0)
return -1;
memcpy(mac, addr->sa_data, 6);
return ret;
}
方法二
ifconfig -a
使用ifconfig -a,然后分析字符串吧,虽然比较麻烦,但也是一种方法,自己懒的写代码了,给个大概参考的伪代码
......
popen("ifconfig -a > mac.text", "r");
pclose;
分析mac.text文档,找到eth0 或者 eth1的MAC;
......