• 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];
    }

    测试:

  • 相关阅读:
    themes、skins
    使用GreyBox实现Ajax模式窗口
    .net最小化到系统托盘
    asp.net自定义控件
    [转]SQL函数的简短说明
    prototype1.4 和1.5
    [转]Oracle PL/SQL 编程手册(SQL大全)
    更新同一张表中的数据的方法
    js中eval()的作用
    asp.net中的中文和特殊字符的处理方式!
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3664607.html
Copyright © 2020-2023  润新知