Cómo hacer lo mismo en el código java y dónde debo usar la dirección IP y el nombre de host del servidor DNS.
Dark Matter
Otra consulta, ¿tendremos que proporcionar la dirección IP del servidor DNS en cualquier caso o intentará encontrarla de forma predeterminada? Estoy un poco confundido aquí si necesitamos usar solo el nombre de host o el nombre de host + la dirección IP del servidor dns también.
Dark Matter
1
La búsqueda de la dirección con el nombre no es complicada. Siempre que use el resolutor predeterminado del sistema. Entonces: ¿realmente necesitas usar la dirección del servidor DNS?
AH
Tengo la misma pregunta: ¿Realmente necesito la dirección del servidor DNS o resolverá la dirección de forma predeterminada? BTW Estoy usando un servidor AIX Unix.
Digamos que si tengo una dirección IP dns 10.37.221.152 y un nombre de host dice "www.student.com", entonces, ¿cómo puedo encontrar la dirección IP?
Dark Matter
3
@DarkMatter: InetAddressdebería obtener la dirección de DNS resuelta cuando la solicite getHostAddress(). Sin embargo, no estoy seguro de si puede obligarlo a usar un servidor DNS específico .
thegrinner
Entonces, idealmente, debe resolverse solo sin que el programador especifique explícitamente la dirección del servidor DNS, ¿verdad?
Dark Matter
1
@DarkMatter Sí. Creo que usa cualquier servidor DNS configurado en la propia computadora.
Como lo sugirió todo lo anterior, puede usar,
InetAddress.getByName("hostName")pero esto puede darle una IP en caché, lea la documentación de Java para el mismo. Si desea obtener una IP de DNS, puede usar:
Además de lo que señaló @daksh, puede deshabilitar la memoria caché de respuesta de DNS como se sugiere aquí, pero tenga en cuenta el momento para deshabilitar la memoria caché, así como el almacenamiento en caché de las respuestas de DNS realizadas por su sistema operativo y otros servidores DNS como se sugiere aquí . Espero que esto ayude
CrazyGreenHand
Por alguna razón, esta llamada me da un resultado positivo para cualquier nombre de host. Pensé que tenía mi IP por defecto, pero no, me da una IP específica para cualquier host desconocido.
dig <hostname>
en una línea de comandos?Respuestas:
Echar un vistazo a
InetAddress
, y elgetHostAddress()
método.InetAddress address = InetAddress.getByName("www.example.com"); System.out.println(address.getHostAddress());
fuente
InetAddress
debería obtener la dirección de DNS resuelta cuando la solicitegetHostAddress()
. Sin embargo, no estoy seguro de si puede obligarlo a usar un servidor DNS específico .Puedes hacerlo así:
for(InetAddress addr : InetAddress.getAllByName("stackoverflow.com")) System.out.println(addr.getHostAddress());
fuente
Puede usar InetAddress para esto. Pruebe el siguiente código,
InetAddress address = InetAddress.getByName("www.yahoo.com"); System.out.println(address.getHostAddress()); System.out.println(address.getHostName());
fuente
Como lo sugirió todo lo anterior, puede usar,
InetAddress.getByName("hostName")
pero esto puede darle una IP en caché, lea la documentación de Java para el mismo. Si desea obtener una IP de DNS, puede usar:InetAddress[] ipAddress = DNSNameService.lookupAllHostAddr("hostName");
fuente