OC

Knowledge OS
登录 注册
全部话题 移民 创业 iOS Mac Objective-C Swift Android 招聘 求职

如何获取本地IP地址,不调用私有API

sunyawang
sunyawang 发布于 2013年11月06日
无人欣赏。

谁有什么好办法吗? 我用了那个IPAdress.h的类,但是只能获取一次,再获取的话就是null了。 为了防止网络异常,我必须要实时获取多次才行

共3条回复
楼长 ·
sunyawang 回复于 2013年11月06日

暂时用这个了

- (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 tempaddr = interfaces; while (tempaddr != NULL) { if( tempaddr->ifaaddr->safamily == AFINET) { // Check if interface is en0 which is the wifi connection on the iPhone if ([[NSString stringWithUTF8String:tempaddr->ifaname] isEqualToString:@"en0"]) { // Get NSString from C String address = [NSString stringWithUTF8String:inetntoa(((struct sockaddrin *)temp_addr->ifa_addr)->sin_addr)]; } }

 temp_addr = temp_addr->ifa_next;
}

}

// Free memory freeifaddrs(interfaces);

return address; }

2楼 ·
nickel 回复于 2013年11月06日

基本的c都可以做到,不需要什么私有api,这不是什么隐私信息来的,别想得太复杂。oc层的api自己去找啊,这种小问题不要懂不懂就问人。

3楼 ·
yuzhouwww 回复于 2013年11月06日

就算有ip也不一定是有效的网络链接。如果只是检查网络异常的话,可以用Reachability.h。

登录 或者 注册

AltStyle によって変換されたページ (->オリジナル) /