iOS获得当前设备的IP最方便最好的方法 (分IPv4 & IPv6)
来源:互联网 发布:sql创建日期型字段 编辑:程序博客网 时间:2024/06/06 01:33
IPv4:
#import <ifaddrs.h>#import <arpa/inet.h>// Get IP Address- (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;}
IPv6:
- (NSString *)getIPAddress{ struct ifaddrs *interfaces = NULL; struct ifaddrs *temp_addr = NULL; NSString *wifiAddress = nil; NSString *cellAddress = nil; // retrieve the current interfaces - returns 0 on success if(!getifaddrs(&interfaces)) { // Loop through linked list of interfaces temp_addr = interfaces; while(temp_addr != NULL) { sa_family_t sa_type = temp_addr->ifa_addr->sa_family; if(sa_type == AF_INET || sa_type == AF_INET6) { NSString *name = [NSString stringWithUTF8String:temp_addr->ifa_name]; NSString *addr = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; // pdp_ip0 NSLog(@"NAME: \"%@\" addr: %@", name, addr); // see for yourself if([name isEqualToString:@"en0"]) { // Interface is the wifi connection on the iPhone wifiAddress = addr; } else if([name isEqualToString:@"pdp_ip0"]) { // Interface is the cell connection on the iPhone cellAddress = addr; } } temp_addr = temp_addr->ifa_next; } // Free memory freeifaddrs(interfaces); } NSString *addr = wifiAddress ? wifiAddress : cellAddress; return addr ? addr : @"0.0.0.0";}
- iOS获得当前设备的IP最方便最好的方法 (分IPv4 & IPv6)
- (0035) iOS 开发之获得当前设备的IP(分IPv4 & IPv6)
- IOS 获得当前设备使用的代理IP
- Ipv6上Ipv4的方法
- 获得当前IOS设备的型号
- ios 获得当前最上面的窗口
- ipv6 ipv4的不同
- C#获取本机IP(排除IPV6,仅获取IPV4)的方法
- iOS 得到当前设备的IP地址
- IP 地址的划分 IPV4 IPV6的配置
- iOS测试:IPV4下搭建IPV6网络 测试app在IPV4和IPV6下的兼容性
- 如何比较字符串形式的IP地址(ipv4与ipv6)
- IP地址(IPv4)/IPv6地址的正则表达式
- TCP/IP协议 之IPV4与IPV6的区别
- 获得当前运行的设备上的 ios版本号
- Returning an IPv4 Address in an IPv6-Enabled Environment 在vista中获取IPV4的IP
- IPV4向IPV6的过渡的几种方法
- 闲谈IPv6-尴尬的IPv4
- 自己动手写Web自动化测试框架(1) :概述
- NYOJ---108--士兵杀敌(一)
- POJ 3368 Frequent values(RMQ 区间出现频率最多数字次数)
- Unity3D GUI TextField
- HDU 1561 The more, The Better
- iOS获得当前设备的IP最方便最好的方法 (分IPv4 & IPv6)
- ScriptCase升级到7.01
- [原]Java设计模式透析之 —— 适配器(Adapter)
- 自己动手写Web自动化测试框架(2):打开和操纵IE
- android QR code
- 35 个你也许不知道的 Google 开源项目
- Make Some Changes To Reduce Your Stress Levels(I)
- UVA 10282 Babelfish
- linux 内核编译:内核配置原理与常见配置问题的解决方法&&内核版本控制解析