获取当前设备的IP地址和MAC地址:
1.导入相关库文件。
2.调用方法getIPAddress 调用方法getMacAddress。
- //
- // GetForIPMac.m
- // Eric
- //
- // Created by Eric on 15-3-24.
- // Copyright (c) 2015年 yons. All rights reserved.
- //
- #import "GetForIPMac.h"
- //Get IP 需要导入的库文件
- #import <ifaddrs.h>
- #import <arpa/inet.h>
- //Get MAC 需要导入的库文件
- #include <sys/socket.h> // Per msqr
- #include <sys/sysctl.h>
- #include <net/if.h>
- #include <net/if_dl.h>
- @interface GetForIPMac ()
- @end
- @implementation GetForIPMac
- - (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view.
- //获取当前设备的IP和MAC地址
- NSString *ip_str = [self getIPAddress];
- NSLog(@" Get IP Address %@",ip_str);//192.168.191.5
- NSString *mac_str = [self getMacAddress];
- NSLog(@"Get MAC Address %@",mac_str); //B4:F0:AB:1C:05:93
- }
- #pragma mark IP
- /**
- * @Author, 15-03-24 09:07:06
- *
- * Get IP Address
- *
- * #import <ifaddrs.h>
- *
- * #import <arpa/inet.h>
- *
- * @return
- */
- - (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;
- }
- #pragma mark MAC
- /**
- * @Author , 15-03-24 09:07:06
- *
- * #include <sys/socket.h> // Per msqr
- * #include <sys/sysctl.h>
- * #include <net/if.h>
- * #include <net/if_dl.h>
- *
- * Return the local MAC addy
- * Courtesy of FreeBSD hackers email list
- * Accidentally munged during previous update. Fixed thanks to mlamb.
- *
- * @return
- */
- - (NSString *) getMacAddress
- {
- int mib[6];
- size_t len;
- charchar *buf;
- unsigned charchar *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 charchar *)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];
- }
- - (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- @end
推荐一家即时通讯云服务商:yun2win:www.yun2win.com