【问题标题】:How to get the correct IPv6 address in cocoa如何在可可中获取正确的 IPv6 地址
【发布时间】:2012-07-19 15:04:09
【问题描述】:

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

【问题讨论】:

  • “第一个不是正确的”是什么意思?第一个是什么?什么是正确的?为什么重要的是哪个是第一个?
  • 它列出了一些3个或更多的IP地址,在这个列表中,第一个是第一个IP地址,它是一些随机IP地址,在系统偏好中,我们可以看到IP地址正确,IP系统偏好设置中的地址是正确的。
  • 实际的第一个 IP 地址是什么?是什么让您认为它是“一些随机 IP 地址”而不是正确的?是什么让你认为正确的那个实际上是“正确的”?你的标准是什么?

标签: macos cocoa ip-address ipv6


【解决方案1】:

你显然有 2 个接口,en0en1

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

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

【讨论】:

    猜你喜欢
    • 2013-04-23
    • 2019-05-18
    • 1970-01-01
    • 2012-02-24
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    相关资源
    最近更新 更多