我有以下代码片段,它返回正确的IPV4地址。
NSArray *addresses = [[NSHost currentHost] addresses];
NSString *stringAddress;
for (NSString *anAddress in addresses) {
if (![anAddress hasPrefix:@"127"] && [[anAddress componentsSeparatedByString:@"."] count] == 4) {
stringAddress = anAddress;
NSLog(@"stringAddress is %@",stringAddress);
break;
} else {
// Do Something
}
}
运行此应用程序后,这些是NSHost地址显示的IP地址。
2012-10-01 17:30:45.722 GetIPV6Address[1928:403] addresses is (
"fe80::426c:8fff:fe07:f4e4%en0",
"fdc7:2c68:e800::426c:8fff:fe07:f5e5",
"fdc7:2c68:e800::fd62:f01c:155d:3228",
"fe80::7ec3:a1ff:fea5:c32d%en1",
"198.168.10.144",)
在我的系统偏好设置中,我可以看到我的IPV4地址是198.168.10.144,IPV6地址是fdc7:2c68:e800 :: 426c:8fff:fe07:f5e5。
这个列表并不总是在同一个序列中,所以我无法动态获取正确的IP地址。从列表中我怎么能找到fdc7:2c68:e800 :: 426c:8fff:fe07:f5e5是我的IPV6地址。非常感谢。
答案 0 :(得分:2)
您显然有2个接口,en0
和en1
。
两者都有一个fe80:
地址(本地链接),两者都有一个fdc7:2c68:e800::...
地址,不管这是什么。 (站点本地?)
它们都应该可以访问和使用。