zoukankan      html  css  js  c++  java
  • [转]OpenWRT之获取MAC地址

    #include <stdlib.h>
    #include <stdio.h>
    #include <net/if_arp.h>
    #include <sys/ioctl.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>

    int main(int argc, char *argv[])
    {
      struct sockaddr_in sin = { 0 };
      struct arpreq myarp = { { 0 } };
      int sockfd;
      unsigned char *ptr;
      
      if(argc!=2) {
        printf("usage: %s <IP address> ",argv[0]);
        exit(0);
      }
      sin.sin_family = AF_INET;
      if(inet_aton(argv[1], &sin.sin_addr)==0) {
        printf("%s: IP address '%s' not valid ",argv[0],argv[1]);
        exit(0);
      }
      
      memcpy(&myarp.arp_pa, &sin, sizeof(myarp.arp_pa));         
      strcpy(myarp.arp_dev, "eth0");
      
      if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
        printf("%s: cannot open socket ",argv[0]);
        exit(0);
      }
      
      if (ioctl(sockfd, SIOCGARP, &myarp) == -1) {
        printf("%s: no entry in arp_cache for '%s' ",argv[0],argv[1]);
        exit(0);
      }
      
      ptr = &myarp.arp_ha.sa_data[0];
      printf("%s: MAC address for '%s' is : ",argv[0],argv[1]);
      printf("%x:%x:%x:%x:%x:%x ",*ptr, *(ptr+1),*(ptr+2),*(ptr+3),*(ptr+4),*(ptr+5));
      
      return 1;

    }

    [root@mini /test]$./getMAC 192.168.1.100
    ./getMAC: no entry in arp_cache for '192.168.1.100'

    [root@mini /test]$./getMAC 192.168.1.1
    ./getMAC: MAC address for '192.168.1.1' is : 6c:e8:73:e4:3c:80

    原文地址:http://blog.csdn.net/suiyuan19840208/article/details/8483026

  • 相关阅读:
    使用RequireJS优化Web应用前端
    基线样式
    css层叠顺序
    摘录android工具类
    android中相关的图形类
    Google Android SDK开发范例------------20141119
    将博客搬至CSDN
    LightOJ1356 最大独立集 HK算法 素数分解
    求二分图最大匹配——Hopcroft-Krap算法
    HDU 6333 莫队分块 + 逆元打表求组合数
  • 原文地址:https://www.cnblogs.com/qvbrgw/p/4947109.html
Copyright © 2011-2022 走看看