Welche der folgenden Möglichkeiten ist die beste und portabelste, um den Hostnamen des aktuellen Computers in Java zu ermitteln?
Runtime.getRuntime().exec("hostname")
gegen
InetAddress.getLocalHost().getHostName()
Welche der folgenden Möglichkeiten ist die beste und portabelste, um den Hostnamen des aktuellen Computers in Java zu ermitteln?
Runtime.getRuntime().exec("hostname")
gegen
InetAddress.getLocalHost().getHostName()
Umgebungsvariablen können auch ein nützliches Mittel sein -- COMPUTERNAME
unter Windows, HOSTNAME
auf den meisten modernen Unix/Linux-Shells.
Siehe: https://stackoverflow.com/a/17956000/768795
Ich verwende diese als "ergänzende" Methoden, um InetAddress.getLocalHost().getHostName()
da diese Funktion, wie von mehreren Seiten angemerkt, nicht in allen Umgebungen funktioniert.
Runtime.getRuntime().exec("hostname")
ist eine weitere mögliche Ergänzung. Zum jetzigen Zeitpunkt habe ich sie noch nicht verwendet.
import java.net.InetAddress;
import java.net.UnknownHostException;
// try InetAddress.LocalHost first;
// NOTE -- InetAddress.getLocalHost().getHostName() will not work in certain environments.
try {
String result = InetAddress.getLocalHost().getHostName();
if (StringUtils.isNotEmpty( result))
return result;
} catch (UnknownHostException e) {
// failed; try alternate means.
}
// try environment properties.
//
String host = System.getenv("COMPUTERNAME");
if (host != null)
return host;
host = System.getenv("HOSTNAME");
if (host != null)
return host;
// undetermined.
return null;
Wenn Sie nicht gegen die Verwendung einer externen Abhängigkeit von Maven Central sind, habe ich gethostname4j geschrieben, um dieses Problem für mich zu lösen. Es verwendet einfach JNA, um die Funktion gethostname von libc aufzurufen (oder holt den Computernamen unter Windows) und gibt ihn als String zurück.
Der portabelste Weg, den Hostnamen des aktuellen Computers in Java zu ermitteln, ist der folgende:
import java.net.InetAddress;
import java.net.UnknownHostException;
public class getHostName {
public static void main(String[] args) throws UnknownHostException {
InetAddress iAddress = InetAddress.getLocalHost();
String hostName = iAddress.getHostName();
//To get the Canonical host name
String canonicalHostName = iAddress.getCanonicalHostName();
System.out.println("HostName:" + hostName);
System.out.println("Canonical Host Name:" + canonicalHostName);
}
}
hostName == null;
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
{
while (interfaces.hasMoreElements()) {
NetworkInterface nic = interfaces.nextElement();
Enumeration<InetAddress> addresses = nic.getInetAddresses();
while (hostName == null && addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (!address.isLoopbackAddress()) {
hostName = address.getHostName();
}
}
}
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.