2011-05-18 13 views
6

Estoy intentando obtener el nombre completo de mi máquina (Windows 7 x64) en Java. En mi máquina, he actualizado el directorio C: \ Windows \ system32 \ drivers \ archivo de este tipo que tiene una entrada como esta, etc \ hosts:Nombre de máquina totalmente calificado Java con/etc/hosts

10.44.2.167 myserver myserver.domain.com 

Todos nuestros sistemas tienen una entrada en el directorio \ etc \ hosts archivo (en el formato anterior) que no puedo cambiar.

El siguiente código siempre devuelve "myserver" y nunca puedo obtener el nombre completo.

InetAddress addr = InetAddress.getLocalHost(); 
String fqName = addr.getCanonicalHostName(); 

¿Cómo puedo lograr esto en Java?

Gracias,

Shreyas

Respuesta

2

Una forma rápida y sucia para hacer this:

try { 
InetAddress addr = InetAddress.getLocalHost(); 

// Get IP Address 
byte[] ipAddr = addr.getAddress(); 

// Get hostname 
String hostname = addr.getHostName(); 
} catch (UnknownHostException e) { 
} 
+0

en mi máquina de esto todavía devuelve el nombre corto. –

+3

Pruebe [este enlace] (http://download.oracle.com/javase/1.4.2/docs/api/java/net/InetAddress.html#getCanonicalHostName()) para recuperar el nombre de host completo llamando a getCanonicalHostName () – Kyle

+0

getCanonicalHostName() es lo que estoy usando, pero no funciona en mi caso debido a mi archivo etc/hosts. –

2

de 'hombre anfitriones/etc/hosts (o ventanas equivalente) tiene el siguiente formato :

ip_address fully_qualified_name aliases 

en su caso, archivo de hosts se vería así:

10.44.2.167 myserver.domain.com myserver another_alias 

Cuando Java hace la búsqueda de equipos, si/etc/hosts tiene una entrada, se agarra la primera nomb_sist_pral (no el alias)

Cuestiones relacionadas