int get_mac(char* mac)
{
int sockfd;
struct ifreq tmp;
char mac_addr[30];
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
{
perror("create socket fail\n");
return -1;
}
memset(&tmp, 0, sizeof(struct ifreq));
strncpy(tmp.ifr_name, "wlan0", sizeof(tmp.ifr_name) - 1);
if ((ioctl(sockfd, SIOCGIFHWADDR, &tmp)) < 0)
{
printf("mac ioctl error\n");
return -1;
}
sprintf(mac_addr, "%02x%02x%02x%02x%02x%02x",
(unsigned char)tmp.ifr_hwaddr.sa_data[0],
(unsigned char)tmp.ifr_hwaddr.sa_data[1],
(unsigned char)tmp.ifr_hwaddr.sa_data[2],
(unsigned char)tmp.ifr_hwaddr.sa_data[3],
(unsigned char)tmp.ifr_hwaddr.sa_data[4],
(unsigned char)tmp.ifr_hwaddr.sa_data[5]
);
printf("local mac:%s\n", mac_addr);
close(sockfd);
memcpy(mac, mac_addr, strlen(mac_addr));
return 0;
}
linux C如何获得某个网卡的IP地址
最新推荐文章于 2023-06-16 14:16:01 发布