zoukankan      html  css  js  c++  java
  • 获取mac地址

    导入系统框架:

    #import <ifaddrs.h>

    #import <arpa/inet.h>

     

    #include <sys/socket.h>

    #include <sys/sysctl.h>

     

    #include <net/if.h>

    #include <net/if_dl.h>

     

    代码:

    //ip

    - (NSString *)getIPAddress {

        

        NSString *address = @"error";

        

        struct ifaddrs *interfaces = NULL;

        

        struct ifaddrs *temp_addr = NULL;

        

        int success = 0;

        

        // retrieve the current interfaces - returns 0 on success

        

        success = getifaddrs(&interfaces);

        

        if (success == 0) {

            

            // Loop through linked list of interfaces

            

            temp_addr = interfaces;

            

            while(temp_addr != NULL) {

                

                if(temp_addr->ifa_addr->sa_family == AF_INET) {

                    

                    // Check if interface is en0 which is the wifi connection on the iPhone

                    

                    if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {

                        

                        // Get NSString from C String

                        

                        address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];

                        

                    }

                    

                }

                

                temp_addr = temp_addr->ifa_next;

                

            }

            

        }

        

        // Free memory

        

        freeifaddrs(interfaces);

        

        return address;

        

    }

     

     

    //MAC

    - (NSString *)getMacAddress

     

    {

        

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

        

        

        

    }

    工作小记,欢迎共享
  • 相关阅读:
    记一次file_get_contents报failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request的错
    记一次centos7下配置服务器的过程
    locate: 无法执行 stat () `/var/lib/mlocate/mlocate.db': 没有那个文件或目录
    VM12虚拟机Centos7配置动态IP的网络设置
    记录下防御SSH爆破攻击的经验(CentOS7.3)
    第6次实践作业 17组
    第5次实践作业
    第3次实践作业
    第2次实践作业
    第1次实践作业
  • 原文地址:https://www.cnblogs.com/fannyLi/p/4305096.html
Copyright © 2011-2022 走看看