2016-07-28 116 views
0

ich eine Frage zu einem Problem geschrieben, die InetAddress in 8 java betrifft: InetAddress java 8 is not getting the hostname, die zwischen dem Erhalten Hostnamen InetAddress oder System.getenv besser ist

jedoch fand ich eine einfache Lösung, die durch System.getenv("HOSTNAME") statt InetAddress.getLocalHost().getHostName() mit ...

ich möchte wissen, was der Unterschied ist zwischen den Hostnamen immer mit:

InetAddress.getLocalHost().getHostName(); 

oder

System.getenv("HOSTNAME") 

und gibt es irgendwelche Auswirkungen? Welches ist besser?

+0

Sie wahrscheinlich nicht auf Systemumgebungsvariablen –

+1

verlassen sollten, wenn Sie über die Kompatibilität kümmern, wissen, dass 'hostname' nicht auf Windows vorhanden ist. Aber die Hauptfrage ist: Warum brauchen Sie es? Ein Computer kann viele Domains hosten, weshalb brauchen Sie den Namen? – Andreas

+0

Nicht nur Windows, es gibt auch keine Garantie, dass es unter Linux gesetzt wird. Erstens ist es keine POSIX-erforderliche Umgebungsvariable, und einige Distributionen können sich dafür entscheiden, sie nicht zu verwenden oder nicht mehr zu verwenden. Zweitens, abhängig davon, wie der Prozess gestartet wird, müssen nicht unbedingt alle Umgebungsvariablen nach vorne exportiert werden. – Pace

Antwort

0

In den meisten Systemen sollten sie den gleichen Wert zurückgeben. System.getenv() hängt jedoch von den Umgebungsvariablen des Systems ab.

0

System.getenv("HOSTNAME") ist die beste für Sie, weil dies den genauen Wert gibt, den Sie erwarteten, da es von einer Umgebungsvariablen kommt.

InetAddress.getLocalHost().getHostName() Es gibt Host-Namen, die unter vielen verschiedenen Hostnamen bekannt sein können. Lesen Sie mehr Recommended way to get hostname in Java