利用ioctl获取本机指定设备的MAC地址
生活随笔
收集整理的這篇文章主要介紹了
利用ioctl获取本机指定设备的MAC地址
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
// 利用ioctl獲取本機指定設備的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;
}
運行結果:
?
總結
以上是生活随笔為你收集整理的利用ioctl获取本机指定设备的MAC地址的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UE破解版安装
- 下一篇: java毕业设计水库洪水预报调度系统源码