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

标签 java inetaddress

我有以下小代码片段:

        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 收集主机信息所需的网络操作。为您的机器配置。

关于Java InetAddress.getHostName() 需要很长时间才能执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10420317/

相关文章:

Java InetAddress.isReachable() 超时

java - 找不到符号 InetAddress.getByAddress()

java - 一件有趣的事情发生了...... ExecutorCompletionService

java - SonarLint 和 IBM JVM 的 HTTPS 问题

java - 对包含自定义类的列表进行排序

java - Mockito Java doAnswer

java - 主机名中是否支持下划线?

java - 如何在java中解析build.gradle文件?

java - Intellij 支持启动配置中的变量吗?

java - IP 地址无法访问