Java中主机名的IP地址?

我的主机文件(C:\ WINDOWS \ system32 \ drivers \ etc \ hosts)有一堆主机名映射的IP地址:

# Switches 192.168.200.254 sw-con-ctrl 192.168.201.253 sw-con-ctrl-2 192.168.201.254 sw-con-ctrl-1 # 192.168.188.1 sw-con-ctrl-blk-1 # 192.168.189.1 sw-con-ctrl-red 192.168.190.62 access-console # Routers 192.168.21.1 rtr1 192.168.22.1 rtr2 

我试图找到一种通过Java API以编程方式从IPAddress转换为HostName的方法。

伪代码:

 IPAddress ip = new IPAddress("192.168.190.62"); String host = ip.getHost(); System.out.println(host); //prints "access-console" 

我从这里尝试了代码,它的工作原理。 即:

  InetAddress addr = InetAddress.getByName("192.168.190.62"); String host = addr.getHostName(); System.out.println(host); 

InetAddress类中有方法。 我想你需要getHostNamegetCanonicalHostName ,具体取决于你的需要。

您可以尝试使用此代码。我认为它很有帮助

 import java.net.InetAddress; import java.net.UnknownHostException; public class IpTest { public static void main(String args[]) throws UnknownHostException { InetAddress addr = InetAddress.getLocalHost(); String ipAddress = addr.getHostAddress(); System.out.println("IP address of localhost : " + ipAddress); String hostname = addr.getHostName(); System.out.println("Name of hostname : " + hostname); } } 

这是有效的,因为当不需要反向查找时,javadocs只说本地:如果提供了文字IP地址,则只检查地址格式的有效性。

如果有人知道一种不使用第三方jar子进行远程查找的方法……