【问题标题】:Possible to get the hostname of an IP using SystemConfiguration?可以使用 SystemConfiguration 获取 IP 的主机名吗?
【发布时间】:2009-11-22 01:24:19
【问题描述】:

我正在使用 SystemConfiguration 框架从我的应用中的动态存储中获取当前 IP。

是否也可以从动态存储中获取主机名?当前 IP 可能是本地 IP,因此我试图让返回的值类似于“mymac.local”或“2adg3.dsl.lgtpmi.sbcglobal.net”,具体取决于我连接到网络的方式。

我尝试了 SCDynamicStoreCopyLocalHostName(NULL),但它只返回计算机名称本身(而不是 .local 部分),即使 IP 解析为互联网上每个人都可以访问的主机名。

【问题讨论】:

    标签: objective-c cocoa macos networking


    【解决方案1】:

    你可以试试

    [[NSHost currentHost] names]
    

    我刚试了一下,它会返回我机器的所有本地主机名。

    更新:
    这是一篇很好的博文,修复了一些 NSHost 问题:
    http://cocoawithlove.com/2009/11/drop-in-fix-for-problems-with-nshost.html

    【讨论】:

    • 我正要建议gethostbyname2(*3*),但这可能会返回相同的结果,而且要容易十倍。
    • 我应该提到 [[NSHost currentHost] names] 完全符合我的要求,但是每个人都说不要使用 NSHost,因为它是阻塞的并且不是线程安全的。我一直在研究 CFHost,但它不会返回像“mymac.local”这样的本地名称。
    • 我在原始答案中添加了一个链接,其中显示了 NSHost 的一些解决方法。
    猜你喜欢
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 2012-05-31
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多