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 アドレスが表示する IPAddresses です。

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 に答える