簡體   English   中英

localhost的getCanonicalHostName適用於Win 7但不適用於XP嗎?

[英]getCanonicalHostName for localhost works on Win 7 but not XP?

以下簡單代碼在Windows 7上正常工作,返回一個完全限定的名稱(例如'myhost.x.com')。 但是,在同一網絡中的Windows XP計算機上運行時,它僅返回主機名(例如“myhost”)。 這是一個已知的問題? 任何解決方法?

hostName = InetAddress.getLocalHost().getCanonicalHostName();

上下文:希望匹配遠程服務器上相同原始計算機的進程。 客戶端進程傳入其主機名,以便服務器可以對來自同一客戶端計算機的請求進行分組,即使它們來自該計算機上的不同應用程序。 當一個客戶端進程是Java而另一個是C#時,我們看到使用XP在客戶端計算機上運行的應用程序不匹配,因為一個是完全合格的而另一個不是。 Windows 7客戶端工作正常。 最初認為是.NET沒有在XP上獲得FQDN,但現在它似乎是使用上述代碼的Java客戶端。

更新:在同一台XP機器上,C ++客戶端(不是.NET)也能夠獲得完全限定名稱。 所以看來三者中,只有這台機器上的java無法使用此API獲取FQDN。 這是Java 1.6.0_20-b02。 此外,Java和C ++中的代碼也需要在非Windows平台上運行。

該方法的文檔 - http://download.oracle.com/javase/6/docs/api/java/net/InetAddress.html#getCanonicalHostName () - 表示

“獲取此IP地址的完全限定域名。盡力而為方法,這意味着我們可能無法返回FQDN,具體取決於底層系統配置。”

我相信Java要求操作系統中的解析器在7和XP上顯然是不同的。 無論如何,此請求可以由SecurityManager取消,這意味着您可能必須重新考慮您的身份識別過程。 甚至可能根據機器擁有的所有 IP號碼自己進行DNS查詢。

您需要什么信息以及為什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM