多网卡存在情况下获取指定网卡的MAC地址

xiaoxiao2021-02-27  291

应用软件中经常有需要显示mac地址的功能,方便用户判断当前联网状态,如果是在多网卡存在(无线,有线等)下,网络会经常切换,获取到的MAC地址可能与预期不同,现给出指定网卡获取mac地址的方法。

void get_mac(Mac_Address &mac_address) { int fd = -1; struct ifreq buf; snprintf(mac_address,sizeof(mac_address),"00:00:00:00:00:00"); if((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { return; } //wlan0代表网卡的名字 strncpy(buf.ifr_ifrn.ifrn_name,"wlan0",sizeof(buf.ifr_ifrn.ifrn_name)-1); if((ioctl(fd, SIOCGIFHWADDR, &buf)) != -1) { snprintf(mac_address, sizeof(), "x:x:x:x:x:x", buf.ifr_hwaddr.sa_data[0],buf.ifr_hwaddr.sa_data[1], buf.ifr_hwaddr.sa_data[2], buf.ifr_hwaddr.sa_data[3], buf.ifr_hwaddr.sa_data[4]), buf.ifr_hwaddr.sa_data[5]) } close(fd); return; }

如上。

转载请注明原文地址: https://www.6miu.com/read-8992.html

最新回复(0)