繁体   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