2012-07-20 64 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::...之一,不管這是什麼。 (網站本地?)

它們都應該可達並且可用。