【问题标题】:Get hostname from IP with JCIFS使用 JCIFS 从 IP 获取主机名
【发布时间】:2012-12-25 23:24:23
【问题描述】:

我正在尝试了解如何通过 JCIFS 获取 IP 地址给我的 LAN 上的计算机的名称,但除了它的 IP 之外我什么也得不到。

我使用的代码是

    InetAddress addr = NbtAddress.getByName( ip ).getInetAddress();
    String test = UniAddress.getByName(ip).getHostName();
    System.out.println("IP: " + ip + " - addr: " + addr.getHostName() + " - test: " + test);

我得到的结果是

    IP: 10.1.2.115 - addr: 10.1.2.115 - test: 10.1.2.115

如果我将 getHostAddress() 替换为 toString() 我得到的是

    IP: 10.1.2.115 - addr: 10.1.2.115 - test: 0.0.0.0<00>/10.1.2.115

我哪里错了?

我正在使用 IP 10.1.2.117 的 Mac 测试库,而目标是 Android 设备。

【问题讨论】:

  • 这可能是因为 InetAddress' 名称解析不进行 NMB 查找...而且您没有运行 DNS 服务器。
  • 是的,但问题出在test,应该给我名字,但它会返回我的 IP...

标签: java jcifs


【解决方案1】:

JCIFS 停止在 1.3.14 版本上支持 Netbios 名称解析。 您可以找到停止此操作的发行说明。 https://jcifs.samba.org/

【讨论】:

    【解决方案2】:
        /*
          Jcifs 1.3 no longer calls NbtAddress#checkData() in 
          NbtAddress#getHostName, so you need to actively call 
          NbtAddress#getNodeType() or NbtAddress#isGroupAddress() before acquiring hostName.
        */
        UniAddress address= UniAddress.getByName(currentIp,
                        true);
        Object o = address.getAddress();
        if (o instanceof NbtAddress) {
            NbtAddress nbtAddress = (NbtAddress) o;
            // jcifs 1.3 need call this method for request netbios name.
            nbtAddress.getNodeType();
        }
        ipScan.domain = address.getHostName();
    

    【讨论】:

    • edit你的答案,并详细说明你的答案将如何帮助别人。
    • 请在 cmets 的答案正文 NOT 中发表您的解释。 (正确阅读我的评论。您会在此处获得编辑链接)
    • 我已经为答案添加了解释,谢谢提醒。 @Shashanth
    【解决方案3】:

    有点晚了,但我在 jcifs 1.3.17 上遇到了同样的问题。我恢复到 1.2.25,它现在可以工作了。

    【讨论】:

      【解决方案4】:

      你能用标准的java api代替吗?如果是这样试试下面的

      InetAddress addr = InetAddress.getByName("127.0.0.1");
      String host = addr.getHostName();
      

      【讨论】:

      • 它返回了地址......不幸的是,我注意到它本来就是这样的,因为(至少从我的理解)只有 Windows 有 Netbios 名称......但我不能不明白其他应用程序是如何看到的,例如我的电话名称......
      猜你喜欢
      • 1970-01-01
      • 2015-07-08
      • 2012-05-31
      • 2018-08-26
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多