2012-05-02 188 views
2

我有以下的小的代码片段:的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); 
     } 

获取主机名()方法以相当长的一段时间,如果一台机器已经发现执行。有人能解释为什么吗?

+0

你的情况“相当长时间”有多长? –

回答

1

某些地址需要较长时间才能解决。 InetAddress有一个缓存来存储成功和不成功的解决方案。另外,制作一个线程池。您可以提高性能

0

toString()似乎更快:

给出一个InetAddress IA或InterfaceAddress IA,

System.out.println (ia.toString())将显示包含你的ip地址字符串快于ia.getHostName()

然后可以使用ia.toString().substring来提取它。

我不知道为什么。