日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用ioctl获取本机指定设备的MAC地址

發(fā)布時(shí)間:2023/12/9 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用ioctl获取本机指定设备的MAC地址 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
// 利用ioctl獲取本機(jī)指定設(shè)備的MAC地址#include<stdio.h> #include<string.h> #include<stdlib.h> #include<errno.h> #include<unistd.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<sys/ioctl.h> #include<net/if.h> #include<netinet/ip.h> #include<net/if_arp.h> #include<sys/sysctl.h>int main(int argc, char **argv) {struct sockaddr_in *addr;struct ifreq ifr;unsigned char *mac;char *address;int sockfd;if (argc < 2){printf("Usage : %s interface\n", argv[0]);return 1;}sockfd = socket(AF_INET, SOCK_DGRAM, 0);strncpy(ifr.ifr_name, argv[1], IFNAMSIZ - 1);if (ioctl(sockfd, SIOCGIFADDR, &ifr) == -1){perror("ioctl");exit(1);}addr = (struct sockaddr_in *)&(ifr.ifr_addr);address = inet_ntoa(addr->sin_addr);printf("inet addr: %s\n", address);if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) == -1){perror("ioctl error");exit(1);}mac = (unsigned char*)(ifr.ifr_hwaddr.sa_data);printf("mac address: %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n", mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);printf("%d: [%s]----\n", strlen(mac), mac);return 0; }


運(yùn)行結(jié)果:

[zcm@t #113]$make gcc -c -o a.o a.c gcc -o a a.o [zcm@t #114]$./a eth1 inet addr: 172.25.25.97 mac address: 00:0c:29:63:38:81 0: []---- [zcm@t #115]$./a eth0 ioctl: No such device [zcm@t #116]$


?

總結(jié)

以上是生活随笔為你收集整理的利用ioctl获取本机指定设备的MAC地址的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。