zoukankan      html  css  js  c++  java
  • iOS7以下设备获取mac地址

    注意,是iOS7以下的设备,直接上源码,获取mac地址都是为了唯一标识一个设备的,但iOS7设备的mac地址为 020000000000

    MacAddress.h

    #include <sys/socket.h> 
    #include <sys/sysctl.h>
    #include <net/if.h>
    #include <net/if_dl.h>
    
    NSString *  macaddress();

    MacAddress.m

    #import "MacAddress.h"
    
    NSString *  macaddress()
    {
        int                    mib[6];
        size_t                 len;
        char                  *buf;
        unsigned char         *ptr;
        struct if_msghdr      *ifm;
        struct sockaddr_dl    *sdl;
        
        mib[0] = CTL_NET;
        mib[1] = AF_ROUTE;
        mib[2] = 0;
        mib[3] = AF_LINK;
        mib[4] = NET_RT_IFLIST;
        
        if ((mib[5] = if_nametoindex("en0")) == 0)
        {
            printf("Error: if_nametoindex error/n");
            return NULL;
        }
        
        if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0)
        {
            printf("Error: sysctl, take 1/n");
            return NULL;
        }
        
        if ((buf = malloc(len)) == NULL)
        {
            printf("Could not allocate memory. error!/n");
            return NULL;
        }
        
        if (sysctl(mib, 6, buf, &len, NULL, 0) < 0)
        {
            printf("Error: sysctl, take 2");
            return NULL;
        }
        
        ifm = (struct if_msghdr *)buf;
        sdl = (struct sockaddr_dl *)(ifm + 1);
        ptr = (unsigned char *)LLADDR(sdl);
        
        NSString *outstring = 
        [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x",
         *ptr,     *(ptr+1), *(ptr+2),
         *(ptr+3), *(ptr+4), *(ptr+5)];
        
        free(buf);
        
        return [outstring uppercaseString];
    }

    测试:

  • 相关阅读:
    逆元
    和平委员会
    抢掠计划
    间谍网络
    hacker发展流程图 菜菜学习中
    程序员练级之路
    程序员练级之路
    程序员练级之路
    程序员练级之路
    南邮STITP 基于图挖掘的大规模动态交互网络热点区域识别及分布式处理 立项书
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3664607.html
Copyright © 2011-2022 走看看