23,114
社区成员
发帖
与我相关
我的任务
分享
// 利用ioctl获取本机指定设备的MAC地址
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<sys/ioctl.h>
#include<net/if.h>
#include<netinet/ip.h>
#include<sys/sysctl.h>
int main(int argc, char **argv)
{
struct sockaddr_in *addr;
struct ifreq ifr;
char *address;
int sockfd;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
strncpy(ifr.ifr_name, "eth1", 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(strcmp("172.25.25.97", address) == 0)
printf("OK\n");
else
printf("NO\n");
return 0;
}