Dengan menggunakan Java, bagaimana saya bisa menemukan alamat IP dari nama host yang dikembalikan oleh server DNS itu dengan menggunakan alamat IP dan nama host?
Bagaimana melakukan hal yang sama dalam kode java dan di mana saya harus menggunakan alamat ip DNS-Server dan nama host.
Dark Matter
Pertanyaan lain apakah kita perlu memberikan alamat ip Server DNS dalam hal apa pun atau akan mencoba menemukannya secara default. Saya agak bingung di sini apakah kita hanya perlu menggunakan nama host atau nama host + alamat ip dns-server juga?
Dark Matter
1
Pencarian alamat menggunakan nama tidaklah rumit. Selama Anda hanya menggunakan resolver default sistem. Jadi: apakah Anda benar-benar perlu menggunakan alamat server DNS?
H
Saya memiliki pertanyaan yang sama: Apakah saya benar-benar memerlukan alamat server DNS atau akankah itu menyelesaikan alamat secara default. BTW Saya menggunakan server AIX Unix.
Katakanlah jika saya memiliki alamat ip dns 10.37.221.152 dan nama host mengatakan "www.student.com" lalu bagaimana saya dapat menemukan alamat ip tersebut.
Dark Matter
3
@DarkMatter: InetAddressseharusnya mendapatkan alamat penyelesaian DNS saat Anda memintanya getHostAddress(). Saya tidak yakin apakah Anda dapat memaksanya untuk menggunakan server DNS tertentu .
thegrinner
Jadi idealnya harus menyelesaikan dengan sendirinya tanpa programmer menentukan alamat server DNS secara eksplisit kan?
Dark Matter
1
@Ya. Saya percaya itu menggunakan server DNS apa pun yang diatur di komputer itu sendiri.
Seperti yang disarankan oleh semua di atas, Anda dapat menggunakan
InetAddress.getByName("hostName")tetapi ini dapat memberi Anda IP cache, Baca dokumentasi java untuk hal yang sama. Jika Anda ingin mendapatkan IP dari DNS, Anda dapat menggunakan:
Selain apa yang @daksh tunjukkan, Anda dapat menonaktifkan cache respons DNS seperti yang disarankan di sini, tetapi perhatikan waktu penonaktifan cache serta caching respons DNS yang dibuat oleh OS Anda serta server DNS lainnya seperti yang disarankan di sini . Semoga ini bisa membantu
CrazyGreenHand
Untuk beberapa alasan panggilan ini memberi saya hasil positif untuk sembarang nama host. Saya pikir saya default ke IP saya, tetapi tidak, itu memberi saya beberapa IP khusus untuk host yang tidak dikenal.
dig <hostname>
di baris perintah?Jawaban:
Lihatlah
InetAddress
dangetHostAddress()
metodenya.InetAddress address = InetAddress.getByName("www.example.com"); System.out.println(address.getHostAddress());
sumber
InetAddress
seharusnya mendapatkan alamat penyelesaian DNS saat Anda memintanyagetHostAddress()
. Saya tidak yakin apakah Anda dapat memaksanya untuk menggunakan server DNS tertentu .Anda bisa melakukannya seperti ini:
for(InetAddress addr : InetAddress.getAllByName("stackoverflow.com")) System.out.println(addr.getHostAddress());
sumber
Anda dapat menggunakan InetAddress untuk ini. Coba kode di bawah ini,
InetAddress address = InetAddress.getByName("www.yahoo.com"); System.out.println(address.getHostAddress()); System.out.println(address.getHostName());
sumber
Seperti yang disarankan oleh semua di atas, Anda dapat menggunakan
InetAddress.getByName("hostName")
tetapi ini dapat memberi Anda IP cache, Baca dokumentasi java untuk hal yang sama. Jika Anda ingin mendapatkan IP dari DNS, Anda dapat menggunakan:InetAddress[] ipAddress = DNSNameService.lookupAllHostAddr("hostName");
sumber