尝试使用java获取LAN中给定IP地址的主机名。
远程机器也被ping,但返回的主机名是ip地址本身。
在其他地方读,这个问题是因为"托管文件"在system32 / drivers / etc / hosts下没有包含所需的信息,所以我手动添加它,并且我能够从java程序中获取它。
奇怪的是,在此之前的某个时间,我将计算机连接到另一个局域网(使用我的手机),并且没有必要进行文件编辑以获取主机名远程机器,我猜它已经在文件中可用了。
我的问题是,有没有办法配置路由器,以便它在正确的文件中自己添加主机名?因为实际上当我检查路由器的主页面时(可以通过在导航器中输入192.168.1.1获得),显示连接到路由器的机器的主机名。
提前致谢。
答案 0 :(得分:0)
按IP查找主机名可以这样实现:java.net.InetAddress.getByName("192.168.1.1").getHostName()
,或者您可以使用InetAddress.getByAddress(new byte[] {(byte) 192, (byte) 168, (byte) 1, (byte) 1)});
查找将涉及/ etc / hosts和配置的DNS服务器。
如果您需要更多基本DNS信息,可以通过JNDI使用DNS查找(请参阅com.sun.jndi.dns.DnsContextFactory
和JNDI/DNS Service Provider)。
在这种情况下,需要真正的DNS服务器。