我试图了解如何在我的局域网上获得一个computr的名称给定JCIFS的IP地址,但除了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测试lib,而目标是Android设备。
答案 0 :(得分:1)
JCIFS stop支持1.3.14版本的Netbios名称解析。 您可以找到用于停止此操作的发行说明。 https://jcifs.samba.org/
答案 1 :(得分:0)
有点晚了,但我和jcifs 1.3.17有同样的问题。我恢复到1.2.25,它现在有效。
答案 2 :(得分:0)
/*
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();
答案 3 :(得分:-1)
您可以使用标准的java api吗?如果是这样,请尝试以下
InetAddress addr = InetAddress.getByName("127.0.0.1");
String host = addr.getHostName();