0
我嘗試使用asyncsocket框架獲取IP地址。當通過以太網電纜進行時,以下方法效果很好。 但是當嘗試使用wifi接入點獲取IP地址時,它返回nil。獲取無線網絡地址問題
這裏有一個方法:
- (NSData *)wifiAddress
{// 在iPhone上,無線網絡總是 「EN0」
NSData *result = nil;
struct ifaddrs *addrs;
const struct ifaddrs *cursor;
if ((getifaddrs(&addrs) == 0))
{
cursor = addrs;
while (cursor != NULL)
{
NSLog(@"cursor->ifa_name = %s", cursor->ifa_name);
if (strcmp(cursor->ifa_name, "en0") == 0)
{
if (cursor->ifa_addr->sa_family == AF_INET)
{
struct sockaddr_in *addr = (struct sockaddr_in *)cursor->ifa_addr;
NSLog(@"cursor->ifa_addr = %s", inet_ntoa(addr->sin_addr));
result = [NSData dataWithBytes:addr length:sizeof(struct sockaddr_in)];
cursor = NULL;
}
else
{
cursor = cursor->ifa_next;
}
}
else
{
cursor = cursor->ifa_next;
}
}
freeifaddrs(addrs);
}
return result;
}
我應該在(NSString *)接口參數中插入什麼? – Sergio
我們只是使用「en」,所以任何帶有「en」的東西(例如en0,en1)都會被捕獲。 – tjg184