Java InetAddress.getHostName()需要很长时间才能执行

我有以下小代码片段:

        InetAddress address = InetAddress.getByName(host);
        if(address.isReachable(TIMEOUT_IN_MILLISECONDS)) {
          System.out.println(host + " is reachable.");
          String hostName = address.getHostName();
          System.out.println(hostName);
        }

如果找到了机器,则getHostName()方法需要相当长的时间才能执行.有人可以解释一下原因吗?

解决方法:

InetAddress#getHostName() javadocs开始,该方法将执行reverse hostname lookup.因此,该方法调用的性能取决于JVM与目标主机的域名服务器之间的网络/技术堆栈的性能.

简而言之,该方法将进行系统调用以执行反向查找(例如getaddrinfo(3)),并且该调用将由操作系统实现,以执行通过为您的机器配置的Name Server收集主机信息所需的网络操作.

上一篇:在Python中给出IPv4 addreses列表,获取最小的网络


下一篇:根据IP获取对应端口MAC