2011-09-01 107 views
5

我試圖使用Java代碼獲取我域中的Windows機器的FQDN。在Java中獲取FQDN

我試過InetAddress.getByName("machine-1").getCanonicalHostName()但只返回機器名。

另一方面,如果我ping「machine-1」,我會得到完整的域名。

你知道該怎麼做嗎?

+0

我想知道,如果您在Windows的etc/hosts中設置條目,您的代碼是否工作? – Cratylus

回答

2

簡單的答案是,你的建議,如果可以的話。

該API沒有聲明它會返回FQDN(如果可以的話)。這取決於系統配置。

您發佈的代碼在Windows域計算機上對我有用,但我不能說爲什麼它不適合您。

如果您無法更改機器/域配置,以便java可以檢測到它,並且您的代碼使用該FQDN至關重要,那麼您可以訴諸於執行來自java的ping命令並解析結果至少作爲一種臨時措施。

0

超晚回覆,也許會幫助下一個旅行者。

InetAddress.getLocalHost().getCanonicalHostName() 

這將返回FQDN - 我的JVM版本是1.8.0_144

我發現這個JDK錯誤報告http://bugs.java.com/view_bug.do?bug_id=7166687這或許可以解釋爲什麼有這麼多的困惑。

InetAddress.getLocalHost().getHostName() 

現在只返回主機名。