Bir ana bilgisayar adının ip adresini çözümleme


88

DNS sunucusu IP adresine ve bir ana bilgisayar adına sahibim.

Java kullanarak, bu DNS sunucusu tarafından döndürülen ana bilgisayar adının IP adresini IP adresini ve ana bilgisayar adını kullanarak nasıl bulabilirim?


3
dig <hostname>bir komut satırında mı?
ceejayoz

Aynı şeyi java kodunda nasıl yapmalı ve DNS-Sunucu ip adresini ve ana bilgisayar adını nerede kullanmalıyım?
Dark Matter

Başka bir sorgu, her durumda DNS Sunucusu ip adresini sağlamamız gerekecek mi yoksa varsayılan olarak bulmaya çalışacak mı? Burada sadece ana bilgisayar adı veya ana bilgisayar adı + dns-sunucu ip adresini de kullanmamız gerekip gerekmediği konusunda biraz kafam karıştı mı?
Dark Matter

1
Adı kullanarak adres araması karmaşık değildir. Sadece sistemin varsayılan çözümleyicisini kullandığınız sürece. Öyleyse: DNS sunucu adresini gerçekten kullanmanız gerekiyor mu?
AH

Aynı sorum var: DNS sunucu adresine gerçekten ihtiyacım var mı yoksa adresi varsayılan olarak çözecek mi.BTW Bir AIX Unix sunucusu kullanıyorum.
Dark Matter

Yanıtlar:


131

InetAddressVe getHostAddress()yönteme bir göz atın .

InetAddress address = InetAddress.getByName("www.example.com"); 
System.out.println(address.getHostAddress()); 

Bir dns ip adresim 10.37.221.152 varsa ve bir ana bilgisayar adı "www.student.com" diyorsa, ip adresini nasıl bulabilirim.
Dark Matter

3
@DarkMatter: sorduğunuzda InetAddressDNS çözümlenmiş adresi almalısınız getHostAddress(). Yine de onu belirli bir DNS sunucusunu kullanmaya zorlayıp zorlayamayacağınızdan emin değilim .
thegrinner

Dolayısıyla, programcı DNS sunucu adresini açıkça doğru belirtmeden ideal olarak kendi kendine çözmesi gerekir mi?
Dark Matter

1
@DarkMatter Evet. Bilgisayarın kendisinde ayarlanmış olan DNS sunucusunu kullandığına inanıyorum.
thegrinner

31

Bunu şu şekilde yapabilirsiniz:

for(InetAddress addr : InetAddress.getAllByName("stackoverflow.com"))
    System.out.println(addr.getHostAddress());

9

Bunun için InetAddress'i kullanabilirsiniz. Aşağıdaki kodu deneyin,

InetAddress address = InetAddress.getByName("www.yahoo.com");
System.out.println(address.getHostAddress());
System.out.println(address.getHostName());

3

Yukarıdakilerin hepsinin önerdiği gibi kullanabilirsiniz, InetAddress.getByName("hostName")ancak bu size önbelleğe alınmış bir IP verebilir, bunun için java belgelerini okuyun. DNS'den bir IP almak istiyorsanız şunları kullanabilirsiniz:

InetAddress[] ipAddress = DNSNameService.lookupAllHostAddr("hostName");

@Daksh'ın işaret ettiğine ek olarak, burada önerildiği gibi DNS yanıt önbelleğini devre dışı bırakabilirsiniz, ancak önbelleği devre dışı bırakmanın zamanlamasının yanı sıra işletim sisteminiz ve burada önerilen diğer DNS sunucuları tarafından yapılan DNS yanıtlarının önbelleğe alınmasının farkında olun . Umarım bu yardımcı olur
CrazyGreenHand

Bazı nedenlerden dolayı bu çağrı bana herhangi bir ana bilgisayar adı için olumlu sonuç veriyor. IP'mi varsayılan olarak ayarladığımı sanıyordum, ancak hayır, bana bilinmeyen herhangi bir ana bilgisayar için belirli bir IP veriyor.
Imaskar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.