如何在cocoa中获取正确的IPv6地址

时间:2012-07-20 10:34:58

标签: macos cocoa ip-address ipv6

我有以下代码片段,它返回正确的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地址。非常感谢。

1 个答案:

答案 0 :(得分:2)

您显然有2个接口,en0en1

两者都有一个fe80:地址(本地链接),两者都有一个fdc7:2c68:e800::...地址,不管这是什么。 (站点本地?)

它们都应该可以访问和使用。