用于本地主机的getCanonicalHostName可在Win 7上运行,但不能在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查找。 您需要什么信息,为什么?     

要回复问题请先登录注册