暂时用这个了
- (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; }
基本的c都可以做到,不需要什么私有api,这不是什么隐私信息来的,别想得太复杂。oc层的api自己去找啊,这种小问题不要懂不懂就问人。
就算有ip也不一定是有效的网络链接。如果只是检查网络异常的话,可以用Reachability.h。