2012-05-02 86 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來提取它。

我不知道爲什麼。