如何通过某种调用将unix主机ID转换为Java?
http://linux.about.com/library/cmd/blcmdl1_hostid.htm
最佳答案
如果已通过先前对sethostid(long int id)
的调用进行了设置,则它将驻留在HOSTIDFILE
(通常为/etc/hostid
)中。
如果不存在,则获取计算机的主机名。拔出主机名的地址,如果是IPv4,则它是IPv4地址,其格式从点分十进制转换为二进制,并交换前16位和后16位。
InetAddress addr = InetAddress.getLocalHost();
byte[] ipaddr = addr.getAddress();
if (ipaddr.length == 4) {
int hostid = 0 | ipaddr[1] << 24 | ipaddr[0] << 16 | ipaddr[3] << 8 | ipaddr[2];
StringBuilder sb = new StringBuilder();
Formatter formatter = new Formatter(sb, Locale.US);
formatter.format("%08x", hostid);
System.out.println(sb.toString());
} else {
throw new Exception("hostid for IPv6 addresses not implemented yet");
}