2011-09-01 47 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() 

现在只返回主机名。