2012-07-20 112 views
1

我有以下代码片段,它返回正确的IPV4地址。如何在可可中获取正确的IPv6地址

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

“第一个不正确的”是什么意思?第一个是什么?什么是正确的?为什么它首先是重要的? – 2012-07-20 10:46:27

+0

其中列出了一些3个或更多的IP地址,在这个列表中,第一个是第一个IP地址,它是一些随机IP地址,在系统偏好设置中,我们可以看到IP地址正确,系统首选项中的IP地址是正确的一。 – Akbar 2012-07-20 11:29:34

+1

什么是实际的第一个IP地址?是什么让你认为它是“一些随机的IP地址”而不是正确的?是什么让你认为正确的人实际上“正确”?你的标准是什么? – 2012-07-20 19:09:09

回答

2

显然你有2个接口,en0en1

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

它们都应该可达并且可用。

相关问题