gpt4 book ai didi

java - localhost 的 getCanonicalHostName 适用于 Win 7 但不适用于 XP?

转载 作者:行者123 更新时间:2023-12-02 08:19:15 24 4
gpt4 key购买 nike

以下简单代码在 Windows 7 上运行良好,返回完全限定的名称(例如“myhost.x.com”)。但是,当在同一网络中的 Windows XP 计算机上运行时,它仅返回主机名(例如“myhost”)。这是一个已知的问题?有什么解决方法吗?

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

上下文:想要匹配远程服务器上同一原始计算机的进程。客户端进程传入其主机名,以便服务器可以对来自同一客户端计算机的请求进行分组,即使它们来自该计算机上的不同应用程序。当一个客户端进程是 Java 而另一个是 C# 时,我们发现在使用 XP 的客户端计算机上运行的应用程序不匹配,因为一个客户端进程是完全限定的,而另一个不是。 Windows 7 客户端工作正常。最初以为是 .NET 没有在 XP 上获取 FQDN,但现在看来是 Java 客户端使用了上面的代码。

更新:在同一台 XP 计算机上,C++ 客户端(不是 .NET)也能够获取完全限定名称。因此,在这三者中,似乎只有 native 上的 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 查找。

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

关于java - localhost 的 getCanonicalHostName 适用于 Win 7 但不适用于 XP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5779898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com