2009-07-08 5 views

Répondre

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

Notez que cela dépend du DNS et peut échouer: http://stackoverflow.com/questions/7883542/getting-the-computer-name-in-java – Vadzim

+1

La façon dont la question est formulée: "get physical machine name", cette n'est * pas * une bonne réponse. Strictement ce que ci-dessus vous donnera est le ** nom du réseau ** de l'hôte, généralement le nom de l'interface localhost. Voir http://stackoverflow.com/a/40702767/1504556. Java n'a aucun moyen (standardisé) d'obtenir le "nom de la machine" ou le "nom de l'ordinateur" de la machine locale. – peterh

+0

totalement d'accord avec @Vadzim. Sans DNS ou DNS dynamique mappant l'adresse IP attribuée par DHCP, le nom de l'ordinateur renvoyé pourrait être très différent du vrai nom de l'ordinateur. – someone

1

Je ne suis pas sûr de ce que vous entendez par Nom physique machine. Votre commentaire "(Physique = OS, jusqu'à vmware ...)" doit m'expliquer.

Mais vous pouvez utiliser System.getProperty (touche String) où la clé est l'une des clés trouvées ici: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#getProperties()

Cela devrait vous dire le nom OS. Si vous avez besoin d'un nom d'hôte, utilisez le conseil de jsight.

+0

Je veux dire le nom de l'ordinateur sur lequel s'exécute la JVM. Probablement un ordinateur physique, mais si la JVM est exécutée dans une autre machine virtuelle, alors ce nom est bon. – ripper234

11

couple d'options, puisque je ne suis pas sûr de ce que vous voulez:

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

Ou ...

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

Ou sur 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

J'étais sous l'impression getRunTimeMXBean() n'est pas fiable à 100% – Hector

+0

"uname -n" fait le travail exact. –

9

Sous Windows, si vous voulez le nom du poste de travail, vous pouvez utiliser:

System.getenv("COMPUTERNAME") 
Questions connexes