【问题标题】:IP Address to Hostname in Java?Java中的IP地址到主机名?
【发布时间】:2011-03-23 06:16:31
【问题描述】:

我的主机文件(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-ylw-1
# 192.168.189.1       sw-con-ctrl-blu
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"

【问题讨论】:

    标签: java ip-address hostname hosts


    【解决方案1】:
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    public class Main02{
        public static void main(String[]args) throws UnknownHostException{
            InetAddress ia = InetAddress.getByName("46.228.47.114");
            System.out.println(ia.getHostName());
        }
    }
    

    输出:

    ir2.fp.vip.ir2.yahoo.com

    【讨论】:

      【解决方案2】:

      InetAddress 类中有用于此目的的方法。我想你会想要getHostNamegetCanonicalHostName,这取决于你的需要。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          我尝试了here 的代码,它可以工作。即:

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

          【讨论】:

            猜你喜欢
            • 2014-12-02
            • 2012-04-12
            • 2014-12-19
            • 2014-04-12
            • 2021-01-18
            • 2013-03-25
            • 2014-11-12
            • 2012-05-31
            • 1970-01-01
            相关资源
            最近更新 更多