请参考以下问题:

https://askubuntu.com/questions/758432/is-there-another-place-to-host-machine-name?noredirect=1#comment1132454_758432

如您所见,我正在使用此方法获取计算机名称:

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 / hostname文件中的真实机器/主机名?

最佳答案

dns总是缓存名称。您应该在所使用的操作系统中执行刷新dns。在Ubuntu上,我发现了有关如何刷新dns的信息:

https://askubuntu.com/questions/414826/how-to-flush-dns-in-ubuntu-12-04

或尝试以下方法:
Flush DNS using Java

关于java - Java为什么要获取主机名的缓存版本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36681527/

10-15 05:06
查看更多