1

我有以下代码片段,它返回正确的 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 地址。任何帮助,将不胜感激。

4

1 回答 1

2

您显然有 2 个接口,en0并且en1.

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

它们都应该是可访问和可用的。

于 2012-10-01T14:03:44.953 回答