将代码写入一个C文件,姑且存为MAC_addr.c。 在linux下运行:gcc -o MAC_addr MAC_addr.c ./MAC_addr 即可获得MAC地址。 亲测以上方法都是通过的,欢迎讨论是否还有更好的方法! 在linux下面使用ifconfig通过syatem调用将数据写入文件中,再打开文件获取网卡的MAC地址(自己写的代码,有问题欢迎留言指出。) #include...
通过上面简单的两步,就能获取到Linux服务器上所有的网卡对应的mac地址。当前操作系统信息: [root@vm101108 src]# uname -a Linux vm101108 3.10.0-1160.15.2.el7.x86_64 #1 SMP Wed Feb 3 15:06:38 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux [root@vm101108 src]# cat /etc/os-release NAME="...
在linux下运行:gcc -o MAC_addr MAC_addr.c 下一条指令要十分注意,这个函数是带参数才能执行的,可以用以下指令: ./MAC_addr etho 即可获得MAC地址。 想用封装的形式,写成一个求MAC地址的函数,然后再调用此函数,可以用方法二,见代码2。 代码2: #include <stdio.h>#include<errno.h>#include<string.h>#i...
* 获取网卡的MAC地址 * @eth_name: 网卡名, 如:eth0, wlan0.. * @mac: 返回6字节mac地址, 如unsigned char mac[6] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB}; * @ret: 0: 成功, -1: 失败 */ int rtnetlink_eth_get_mac(char *eth_name, unsigned char *mac) { int ret; struct r...
Linux下获取MAC地址(C语言版),staticintget_mac(charbinMAC[6]){intsock;structifreqifr;unsignedchar*puc;memset(binMAC,0,6);sock=socket(AF_INET,SOCK_DGRAM,0);if(sock==-1){perror("socket");return
通常运用ioctl函数的第一步是从内核获取系统的所有接口,然后再针对每个接口获取其地址信息。获取所有接口通过SIOCGIFCONF请求来实现: structifconf ifc; structifreq ifrs[16]; 2 ifc.ifc_len =sizeof(ifrs); ifc.ifc_buf =(caddr_t)ifrs; 3 ioctl(fd, SIOCGIFCONF,(char*)&ifc); 获得了接口列表,就可以...
if(!netinfo){ puts("error while open pipe"); exit(1); } char str[200]; while( fgets(str, 199, netinfo) != NULL ){ printf("%s", str); } pclose(netinfo); } [root@localhost ~]# ./test eth0 Link encap:Ethernet HWaddr 00:0C:29:44:FB:6D ...
inti; /*get mac*/ structifreq ifreq; intsock; charmac[32]; if((sock=socket(AF_INET,SOCK_STREAM,0))<0) { perror("error"); return2; } strcpy(ifreq.ifr_name,argv[2]); if(ioctl(sock,SIOCGIFHWADDR,&ifreq)<0) { perror("error:"); ...
1、实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP、端口信息。但在一些特殊场合我们可能需要更多的信息,比如系统中有几块网卡,他们的 Mac地址是多少,每块网卡分配了几个IP (个网卡对应多个IP)等等。这些信息往往需要通过ifconfig指令来获得,对于程序员...
代码语言:javascript 复制 int get_mac(char binMAC[6]) { int sock; struct ifreq ifr; unsigned char *puc; memset(binMAC, 0, 6); sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock == -1) { perror("socket"); return -1; } strcpy(ifr.ifr_name, "eth0"); if (ioctl(sock, SIOCG...