2012-07-20 2 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 주소가 표시되는 IPAddress가됩니다. 내 시스템 환경 설정에서

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

"첫 번째 것이 올바른 것이 아닙니다"는 의미는 무엇입니까? 첫 번째 작품은 무엇입니까? 올바른 것은 무엇입니까? 그리고 그것은 왜 첫 번째인지 중요합니까? –

+0

목록에있는 3 개 이상의 IP 주소 목록이 목록에서 첫 번째 IP 주소는 임의의 IP 주소입니다. 시스템 환경 설정에서 IP 주소를 볼 수 있습니다. 시스템 환경 설정의 IP 주소가 정확합니다 하나. – Akbar

+1

실제 첫 번째 IP 주소는 무엇입니까? 왜 당신이 올바른 IP 주소가 아닌 "임의의 IP 주소"라고 생각하게합니까? 당신이 생각하는 것을 실제로 "정확함"으로 만드는 것은 무엇입니까? 당신의 기준은 무엇입니까? –

답변

2

분명히 2 개의 인터페이스, en0en1이 있습니다.

두 주소 모두 fe80: 주소 (링크 로컬)이고 두 주소 모두 fdc7:2c68:e800::...입니다. (site-local?)

그들은 모두 접근 가능해야하며 사용할 수 있어야합니다.

관련 문제