2016-04-17 4 views
0

Bitte auf diese Frage beziehen:Warum erhält Java die zwischengespeicherte Version des Hostnamens?

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

Wie Sie sehen können, bin ich mit dieser Methode den Namen des Computers zu erhalten:

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; 
} 

Der Anrufer:

InetAddress ip = getFirstNonLoopbackAddress(true, false); 
this.machineName = ip.getCanonicalHostName(); 

Aber das Ergebnis ist, ich bekomme den alten Rechnernamen, bevor ich ihn in Ubuntu ändere.

Wie kann ich den tatsächlichen Rechner/Host-Namen wie in/etc/hostname Datei erhalten?

Antwort

2

Die DNS tun Cache Namen immer. Sie sollten eine Flush-DNS in dem Betriebssystem ausführen, das Sie verwenden. Unter Ubuntu fand ich diese, wie die dns zu spülen:

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

Oder versuchen, diesen Ansatz: mit dieser Art und Weise Flush DNS using Java

+0

Gibt es eine Möglichkeit Java zu vermeiden, die aus dem Gerät einen Namen bekommen? Muss ich dazu den '/ etc/hostname /' öffnen? Indem ich meinen DNS auf einen anderen Server lege, bekomme ich jetzt nur noch die IP-Adresse der Maschine ... seltsam! –

+0

Wenn Sie Ihren DNS-Server ändern, wird der DNS-Cache in Ihrem Betriebssystem aktualisiert, das ist normal und Sie erhalten die richtige IP-Adresse. –

+0

Eine mögliche Lösung, wie in der ursprünglichen Frage (AskUbuntu) gezeigt, ist das Hinzufügen eines externen IP-Eintrags in '/ etc/hosts' mit dem Namen, den ich anzeigen möchte. Java wird es nicht mehr an den DNS-Server stellen. –

Verwandte Themen