请参阅以下问题:
如您所见,我使用此方法获取机器名称:
private InetAddress getFirstNonLoopbackAddress(boolean preferIpv4, boolean preferIPv6) throws SocketException {
Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
while (en.hasMoreElements()) {
NetworkInterface i = en.nextElement();
for (Enumeration<InetAddress> en2 = i.getInetAddresses(); en2.hasMoreElements();) {
InetAddress addr = en2.nextElement();
if (!addr.isLoopbackAddress()) {
if (addr instanceof Inet4Address) {
if (preferIPv6) {
continue;
}
return addr;
}
if (addr instanceof Inet6Address) {
if (preferIpv4) {
continue;
}
return addr;
}
}
}
}
return null;
} 来电者:
InetAddress ip = getFirstNonLoopbackAddress(true, false);
this.machineName = ip.getCanonicalHostName();但结果是,在Ubuntu中更改它之前,我得到了旧的机器名。
如何获得/etc/主机名文件中的真正机器/主机名?
发布于 2016-04-17 20:25:13
dns总是缓存名称。您应该在您正在使用的操作系统中执行一个刷新dns;在Ubuntu上,我发现了关于如何刷新dns的如下内容:
https://askubuntu.com/questions/414826/how-to-flush-dns-in-ubuntu-12-04
或者尝试以下方法:Flush DNS using Java
https://stackoverflow.com/questions/36681527
复制相似问题