Fully qualified machine name Java with /etc/hosts

大憨熊 提交于 2019-12-07 01:55:34

问题


I am trying get the fully qualified name of my machine (Windows 7 x64) in Java. On my machine, I've updated the c:\Windows\system32\drivers\etc\hosts file such that it has an entry like this:

10.44.2.167 myserver myserver.domain.com

All our systems have an entry in the \etc\hosts file (in the above format) which I cannot change.

The following code always returns "myserver" and I am never able to get the fully qualified name.

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

How do I achieve this in Java?

Thanks,

Shreyas


回答1:


A quick and dirty way to do this:

try {
InetAddress addr = InetAddress.getLocalHost();

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

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



回答2:


from 'man hosts ' /etc/hosts (or windows equivalent) has the following format:

ip_address  fully_qualified_name   aliases

so in your case, hosts file would look like:

10.44.2.167 myserver.domain.com   myserver another_alias

When Java does host lookup, if /etc/hosts has an entry, it will grab the first host_name (not the alias)



来源:https://stackoverflow.com/questions/6049260/fully-qualified-machine-name-java-with-etc-hosts

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!