谁有什么好办法吗? 我用了那个IPAdress.h的类,但是只能获取一次,再获取的话就是null了。 为了防止网络异常,我必须要实时获取多次才行
暂时用这个了
- (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; }