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

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; }

nickel 回复于 2013年11月06日

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

yuzhouwww 回复于 2013年11月06日

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

登录 或者 注册