iOS下创建一个类 调用类(IPHelper)方法得到当前IP
#import <Foundation/Foundation.h>
@interface IPHelper :NSObject
+ (NSString *)getIPAddress:(BOOL)isIPv4;
@end
#import "IPHelper.h"
#include <ifaddrs.h>
#include <arpa/inet.h>
#include <net/if.h>
#define IOS_CELLULAR @"pdp_ip0"
#define IOS_WIFI @"en0"
#define IP_ADDR_IPv4 @"ipv4"
#define IP_ADDR_IPv6 @"ipv6"
@interface IPHelper ()
@property (nonatomic,strong)NSString *IpStr;
@end
@implementation IPHelper
+ (NSString *)getIPAddress:(BOOL)isIPv4
{
NSArray *searchArray = isIPv4 ?
@[IOS_WIFI @"/"IP_ADDR_IPv4, IOS_WIFI@"/" IP_ADDR_IPv6, IOS_CELLULAR@"/" IP_ADDR_IPv4, IOS_CELLULAR@"/" IP_ADDR_IPv6 ] :
@[IOS_WIFI @"/"IP_ADDR_IPv6, IOS_WIFI@"/" IP_ADDR_IPv4, IOS_CELLULAR@"/" IP_ADDR_IPv6, IOS_CELLULAR@"/" IP_ADDR_IPv4 ] ;
NSDictionary *addresses = [selfgetIPAddresses];
__block NSString *address;
[searchArrayenumerateObjectsUsingBlock:^(NSString *key,NSUInteger idx, BOOL *stop)
{
address = addresses[key];
if(address) *stop = YES;
} ];
return address ? address : @"0.0.0.0";
}
+ (NSDictionary *)getIPAddresses
{
NSMutableDictionary *addresses = [NSMutableDictionarydictionaryWithCapacity:8];
struct ifaddrs *interfaces;
if(!getifaddrs(&interfaces)) {
struct ifaddrs *interface;
for(interface=interfaces; interface; interface=interface->ifa_next) {
if(!(interface->ifa_flags &IFF_UP) || (interface->ifa_flags &IFF_LOOPBACK)) {
continue;// deeply nested code harder to read
}
const structsockaddr_in *addr = (conststruct sockaddr_in*)interface->ifa_addr;
if(addr && (addr->sin_family==AF_INET || addr->sin_family==AF_INET6)) {
NSString *name = [NSStringstringWithUTF8String:interface->ifa_name];
char addrBuf[INET6_ADDRSTRLEN];
if(inet_ntop(addr->sin_family, &addr->sin_addr, addrBuf,sizeof(addrBuf))) {
NSString *key = [NSStringstringWithFormat:@"%@/%@", name, addr->sin_family ==AF_INET ? IP_ADDR_IPv4 :IP_ADDR_IPv6];
addresses[key] = [NSStringstringWithUTF8String:addrBuf];
}
}
}
freeifaddrs(interfaces);
}
return [addresses count] ? addresses : nil;
}
找个位置调用一下
NSString *str = [IPHelpergetIPAddress:YES];
NSLog(@"%@",str);
下载地址:https://github.com/shanzhiliu/-IP.git