- (NSString *)getCurentLocalIP {
struct ifaddrs *ifa, *ifa_tmp;
char addr[50];
int success = getifaddrs(&ifa);
if (success != 0) {
return @"0.0.0.0";
}
NSString *WIFIaddress = nil;
NSString *PDPaddress = nil;
ifa_tmp = ifa;
while (ifa_tmp) {
if ((ifa_tmp->ifa_addr) && ((ifa_tmp->ifa_addr->sa_family == AF_INET) ||
(ifa_tmp->ifa_addr->sa_family == AF_INET6))) {
if (ifa_tmp->ifa_addr->sa_family == AF_INET) {
// create IPv4 string
struct sockaddr_in *in = (struct sockaddr_in*) ifa_tmp->ifa_addr;
inet_ntop(AF_INET, &in->sin_addr, addr, sizeof(addr));
} else { // AF_INET6
// create IPv6 string
struct sockaddr_in6 *in6 = (struct sockaddr_in6*) ifa_tmp->ifa_addr;
inet_ntop(AF_INET6, &in6->sin6_addr, addr, sizeof(addr));
}
NSString *name = [NSString stringWithFormat:@"%s",ifa_tmp->ifa_name];
NSString *address = [NSString stringWithFormat:@"%s",addr];
// en0 wifi pdp_ip0 蜂窝移动数据
if (address.length <= 15) { // 排除 fe80::10fb:284:1d52:9ef6
if ([name isEqualToString:@"en0"]) { // wifi
WIFIaddress = address;
break;
}
if ([name isEqualToString:@"pdp_ip0"]) { // 蜂窝移动数据
PDPaddress = address;
}
}
}
ifa_tmp = ifa_tmp->ifa_next;
}
freeifaddrs(ifa);
return WIFIaddress ?: PDPaddress;
}
获取本地IP(wifi 和蜂窝数据都可以正常获取)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。