Jak zrobić to samo w kodzie java i gdzie powinienem użyć adresu IP i nazwy hosta serwera DNS.
Dark Matter
Kolejne zapytanie będzie musiało w każdym przypadku podać adres IP serwera DNS, czy też spróbuje go znaleźć domyślnie. Jestem trochę zdezorientowany, czy potrzebujemy również użyć tylko nazwy hosta lub nazwy hosta + adres IP serwera dns?
Dark Matter
1
Wyszukiwanie adresu za pomocą nazwy nie jest skomplikowane. Tak długo, jak używasz domyślnego programu rozpoznawania nazw systemu. A więc: czy naprawdę musisz używać adresu serwera DNS?
AH
Mam to samo pytanie: Czy naprawdę potrzebuję adresu serwera DNS, czy też adres zostanie rozwiązany domyślnie. BTW Używam serwera AIX Unix.
Powiedz, że jeśli mam adres IP DNS 10.37.221.152 i nazwę hosta, powiedz „www.student.com”, to jak mogę znaleźć adres IP.
Dark Matter
3
@DarkMatter: InetAddresspowinien otrzymać adres rozpoznany przez DNS, gdy o to poprosisz getHostAddress(). Nie jestem jednak pewien, czy możesz zmusić go do korzystania z określonego serwera DNS.
thegrinner
Musi więc w idealnym przypadku rozwiązać się sam bez podania przez programistę adresu serwera DNS, prawda?
Dark Matter
1
@DarkMatter Yes. Uważam, że używa dowolnego serwera DNS ustawionego na samym komputerze.
Jak sugerowano powyżej, możesz użyć,
InetAddress.getByName("hostName")ale może to dać ci buforowany adres IP, Przeczytaj dokumentację java dla tego samego. Jeśli chcesz uzyskać adres IP z DNS, możesz użyć:
Oprócz tego, co wskazał @daksh, możesz wyłączyć pamięć podręczną odpowiedzi DNS, jak sugerowano tutaj, ale pamiętaj o czasie wyłączania pamięci podręcznej, a także buforowaniu odpowiedzi DNS wykonanych przez system operacyjny, a także inne serwery DNS, jak sugerowano tutaj . Mam nadzieję, że to pomoże
CrazyGreenHand
Z jakiegoś powodu ta rozmowa daje mi pozytywny wynik dla dowolnej nazwy hosta. Myślałem, że domyślnie używam mojego adresu IP, ale nie, daje mi to określony adres IP dla dowolnego nieznanego hosta.
dig <hostname>
w linii poleceń?Odpowiedzi:
Spójrz na
InetAddress
igetHostAddress()
metodę.InetAddress address = InetAddress.getByName("www.example.com"); System.out.println(address.getHostAddress());
źródło
InetAddress
powinien otrzymać adres rozpoznany przez DNS, gdy o to poprosiszgetHostAddress()
. Nie jestem jednak pewien, czy możesz zmusić go do korzystania z określonego serwera DNS.Możesz to zrobić w ten sposób:
for(InetAddress addr : InetAddress.getAllByName("stackoverflow.com")) System.out.println(addr.getHostAddress());
źródło
Możesz do tego użyć InetAddress. Wypróbuj poniższy kod,
InetAddress address = InetAddress.getByName("www.yahoo.com"); System.out.println(address.getHostAddress()); System.out.println(address.getHostName());
źródło
Jak sugerowano powyżej, możesz użyć,
InetAddress.getByName("hostName")
ale może to dać ci buforowany adres IP, Przeczytaj dokumentację java dla tego samego. Jeśli chcesz uzyskać adres IP z DNS, możesz użyć:InetAddress[] ipAddress = DNSNameService.lookupAllHostAddr("hostName");
źródło