2011-09-10 21 views
0
package networking; 
import java.net.*; 
public class HostIpAddess { 
    public static void main(String args[]){ 
     try { 
      InetAddress address = InetAddress.getByName("204.29.207.217"); 
      System.out.println("IP Name:"+address.getHostName()); 
     }catch (UnknownHostException ex) { 
      System.out.println("Error"); 
     } 
    } 
} 

爲什麼程序會傳遞IP地址而不是反向DNS查找的結果?它是一個從IP打印主機名但不打印的程序主機名

+4

它正在做什麼進行測試查找?引發異常?它說什麼?否則它打印什麼? –

+0

我看到兩個潛在的錯誤。 1)IP被斷開。 2)IP不存在。 – fireshadow52

+1

本程序正在運行它正在打印IP地址..... bt它應該打印主機名。 –

回答

0

通過閱讀Java API文檔(您是否閱讀過?)我建議嘗試使用getCanonicalHostName()

+0

由於IP沒有主機名'getCanonicalHostName()'的行爲與'getHostName()'完全相同。如文檔所述,它將返回IP地址的文本表示。 – Matteo

2

您的代碼工作:問題是,InetAddress.getByName返回主機名唯一

  • 如果存在(即反向查找返回的主機名)
  • 如果JVM能夠執行反向查找(從文檔「[...]如果操作不被允許,它將返回IP地址[...]的文本表示」

在你的情況給定的IP地址進行反向DNS查詢不返回結果:

$ host 204.29.207.217 
Host 217.207.29.204.in-addr.arpa not found: 2(SERVFAIL) 

您可以在http://www.dmoz.org/search?q=204.29.207.217&cat=all&all=no

相關問題