我喜欢在我的应用程序中显示IP地址,我已经知道如何显示WiFi IP地址,但是当我在蜂窝电话时它将显示错误,那么是否有方法显示iPhone上的蜂窝IP地址?如何在iOS应用程序中获取蜂窝IP地址
这里是我使用的无线IP地址代码:
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
temp_addr = interfaces;
while (temp_addr != NULL) {
if(temp_addr->ifa_addr->sa_family == AF_INET) {
// Check if interface is en0 which is the wifi connection on the iPhone
if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {
// Get NSString from C String
address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
}
}
temp_addr = temp_addr->ifa_next;
}
}
// Free memory
freeifaddrs(interfaces);
NSLog(address);
什么错误信息,你得到什么?蜂窝网络的接口名称可能不是“en0”?您的代码仅适用于IPv4地址。有关枚举所有本地IPv4和IPv6接口地址的代码,请参阅(例如)http://stackoverflow.com/a/14084031/1187415,这可能会有所帮助。 –
@Martin R我没有得到任何错误,IP地址的字符串只是(错误) –
蜂窝网络的接口可能有不同的名称(不是“en0”)。尝试枚举* all *接口,也许您可以识别蜂窝网络的接口。也尝试IPv6(请参阅我以前的评论中的链接)。 –