繁体   English   中英

带/ etc / hosts的完全限定机器名Java

[英]Fully qualified machine name Java with /etc/hosts

我正在尝试用Java获取我的机器(Windows 7 x64)的完全限定名称。 在我的机器上,我更新了c:\\ Windows \\ system32 \\ drivers \\ etc \\ hosts文件,使其具有如下条目:

10.44.2.167 myserver myserver.domain.com

我们所有的系统在\\ etc \\ hosts文件中都有一个条目(以上格式),我无法更改。

以下代码始终返回“myserver”,我永远无法获得完全限定的名称。

InetAddress addr = InetAddress.getLocalHost();
String fqName = addr.getCanonicalHostName();

我如何用Java实现这一目标?

谢谢,

Shreyas

一个快速和肮脏的方式做到

try {
InetAddress addr = InetAddress.getLocalHost();

// Get IP Address
byte[] ipAddr = addr.getAddress();

// Get hostname
String hostname = addr.getHostName();
} catch (UnknownHostException e) {
}

来自'man hosts'/ etc / hosts(或等效的windows)具有以下格式:

ip_address  fully_qualified_name   aliases

所以在你的情况下,hosts文件看起来像:

10.44.2.167 myserver.domain.com   myserver another_alias

当Java执行主机查找时,如果/ etc / hosts有一个条目,它将获取第一个host_name(而不是别名)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM