Como fazer o mesmo no código java e onde devo usar o endereço IP e o nome do host do servidor DNS.
Dark Matter
Outra consulta será necessária para fornecer o endereço IP do servidor DNS em qualquer caso ou ele tentará encontrá-lo por padrão. Estou um pouco confuso aqui se precisamos usar apenas o nome do host ou nome do host + endereço IP do servidor dns também?
Dark Matter
1
A pesquisa do endereço usando o nome não é complicada. Contanto que você use apenas o resolvedor padrão do sistema. Então: você realmente precisa usar o endereço do servidor DNS?
AH
Eu tenho a mesma pergunta: eu realmente preciso do endereço do servidor DNS ou ele resolverá o endereço por padrão.BTW Estou usando um servidor AIX Unix.
Digamos que se eu tenho um endereço IP dns 10.37.221.152 e um nome de host diga "www.student.com", como posso encontrar o endereço IP.
Dark Matter
3
@DarkMatter: InetAddressdeve obter o endereço DNS resolvido quando você solicitar getHostAddress(). Não tenho certeza se você pode forçá-lo a usar um servidor DNS específico .
thegrinner,
Portanto, o ideal é que ele seja resolvido sozinho, sem que o programador especifique o endereço do servidor DNS explicitamente, certo?
Dark Matter
1
@DarkMatter Sim. Eu acredito que ele usa qualquer servidor DNS que esteja configurado no próprio computador.
Como sugerido por tudo acima, você pode usar,
InetAddress.getByName("hostName")mas isso pode lhe dar um IP em cache. Leia a documentação do java para o mesmo. Se você deseja obter um IP do DNS, pode usar:
Além do que @daksh apontou, você pode desabilitar o cache de resposta DNS conforme sugerido aqui, mas esteja ciente do momento de desabilitar o cache, bem como o cache de respostas DNS feitas por seu sistema operacional, bem como outros servidores DNS, conforme sugerido aqui . Espero que isso ajude
CrazyGreenHand
Por algum motivo, essa chamada me dá um resultado positivo para qualquer nome de host. Eu pensei que o padrão era meu IP, mas não, ele me dá algum IP específico para qualquer host desconhecido.
dig <hostname>
em uma linha de comando?Respostas:
Dê uma olhada em
InetAddress
e ogetHostAddress()
método.InetAddress address = InetAddress.getByName("www.example.com"); System.out.println(address.getHostAddress());
fonte
InetAddress
deve obter o endereço DNS resolvido quando você solicitargetHostAddress()
. Não tenho certeza se você pode forçá-lo a usar um servidor DNS específico .Você pode fazer assim:
for(InetAddress addr : InetAddress.getAllByName("stackoverflow.com")) System.out.println(addr.getHostAddress());
fonte
Você pode usar InetAddress para isso. Experimente o código abaixo,
InetAddress address = InetAddress.getByName("www.yahoo.com"); System.out.println(address.getHostAddress()); System.out.println(address.getHostName());
fonte
Como sugerido por tudo acima, você pode usar,
InetAddress.getByName("hostName")
mas isso pode lhe dar um IP em cache. Leia a documentação do java para o mesmo. Se você deseja obter um IP do DNS, pode usar:InetAddress[] ipAddress = DNSNameService.lookupAllHostAddr("hostName");
fonte