2009-07-08 33 views

Respuesta

52
String computername=InetAddress.getLocalHost().getHostName(); 
System.out.println(computername); 
+5

Tenga en cuenta que esto depende de DNS y puede fallar: http://stackoverflow.com/questions/7883542/getting-the-computer-name-in-java – Vadzim

+1

La forma en que se formula la pregunta: "obtener el nombre físico de la máquina", esto es * no * una respuesta correcta. Estrictamente hablando, lo que le darán más arriba es el ** nombre de la red ** del host, generalmente el nombre de la interfaz localhost. Ver http://stackoverflow.com/a/40702767/1504556. Java no tiene forma (estandarizada) de obtener "nombre de la máquina" o "nombre de la computadora" de la máquina local. – peterh

+0

totalmente de acuerdo con @Vadzim. Sin DNS o DNS dinámico asignando la dirección IP asignada por DHCP, el nombre de la computadora devuelto podría ser muy diferente del nombre real de la computadora. – someone

1

no estoy exactamente seguro de lo que quiere decir con física Nombre de la máquina. Su comentario "(Physical = OS, hasta vmware ...)" necesita explicarme.

Pero puede utilizar System.getProperty (String key) donde la clave es una de las claves que se encuentran aquí: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#getProperties()

que usted debe decirle a nombre del sistema operativo. Si necesita el nombre de host, use el consejo de jsight.

+0

Me refiero al nombre de la computadora en la que se está ejecutando JVM. Es muy probable que sea una computadora física, pero si la JVM se ejecuta dentro de otra máquina virtual, ese nombre es bueno. – ripper234

11

opciones de los pares, ya que no estoy seguro de lo que quiere:

RuntimeMXBean rmx = ManagementFactory.getRunTimeMXBean(); 
System.out.println(rmx.getName()); 

O ...

System.out.println(InetAddress.getLocalHost().getHostName()); 

O en Linux

Runtime r = Runtime.getRuntime(); 
Process p = r.exec("uname -a"); 
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()); 
System.out.println(r.readLine()); 
+0

estaba bajo la impresión de que getRunTimeMXBean() no es 100% confiable – Hector

+0

"uname -n" hace el trabajo exacto. –

9

En Windows, si quiere el nombre de la estación de trabajo, puede usar:

System.getenv("COMPUTERNAME") 
Cuestiones relacionadas