正在尝试使用java获取LAN中给定ip地址的主机名。
也对远程计算机执行pinged操作,但返回的主机名是ip地址本身。
在其他地方读到这个问题是因为system32/drivers/etc/hosts下的“hosts file”没有包含所需的信息,所以我手动添加了它,在那里我能够从java程序中获得它。
奇怪的是,在此之前的某个时候,我将我的计算机连接到另一个LAN (使用我的手机),并且不需要编辑文件来获得远程机器的主机名,我猜它已经在文件中可用了。
我的问题是,有没有办法配置路由器,使其在正确的文件中自动添加主机名?因为实际上当我查看路由器的主页(可以通过在导航器中输入192.168.1.1获得)时,会显示连接到路由器的机器的主机名。
提前谢谢。
发布于 2017-09-28 14:52:09
通过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服务器。
https://stackoverflow.com/questions/46462522
复制相似问题