การแก้ไขที่อยู่ IP ของชื่อโฮสต์


88

ฉันมีที่อยู่ IP ของเซิร์ฟเวอร์ DNS และชื่อโฮสต์

เมื่อใช้ Java ฉันจะค้นหาที่อยู่ IP ของชื่อโฮสต์ที่เซิร์ฟเวอร์ DNS นั้นส่งคืนโดยใช้ที่อยู่ IP และชื่อโฮสต์ได้อย่างไร


3
dig <hostname>ในบรรทัดคำสั่ง?
— ceejayoz

วิธีการทำเช่นเดียวกันในรหัส java และฉันควรใช้ที่อยู่ IP และชื่อโฮสต์ของเซิร์ฟเวอร์ DNS-Server ที่ไหน
— Dark Matter

แบบสอบถามอื่นเราจะต้องระบุที่อยู่ IP ของเซิร์ฟเวอร์ DNS ไม่ว่าในกรณีใด ๆ หรือจะพยายามค้นหาตามค่าเริ่มต้นฉันสับสนเล็กน้อยที่นี่ว่าเราจำเป็นต้องใช้เฉพาะชื่อโฮสต์หรือชื่อโฮสต์ + ที่อยู่ IP ของเซิร์ฟเวอร์ DNS ด้วยหรือไม่
— Dark Matter

1
การค้นหาที่อยู่โดยใช้ชื่อไม่ซับซ้อน ตราบใดที่คุณใช้ตัวแก้ไขเริ่มต้นของระบบ คุณจำเป็นต้องใช้ที่อยู่เซิร์ฟเวอร์ DNS จริง ๆ หรือไม่?
— AH

ฉันมีคำถามเดียวกัน: ฉันต้องการที่อยู่เซิร์ฟเวอร์ DNS หรือไม่หรือจะแก้ไขที่อยู่ตามค่าเริ่มต้น BTW ฉันใช้เซิร์ฟเวอร์ AIX Unix
— Dark Matter

คำตอบ:


131

ลองดูInetAddressและgetHostAddress()วิธีการ

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

สมมติว่าฉันมีที่อยู่ ip dns 10.37.221.152 และชื่อโฮสต์พูดว่า "www.student.com" แล้วฉันจะหาที่อยู่ ip ได้อย่างไร
— Dark Matter

3
@DarkMatter: InetAddressควรจะได้รับการแก้ไขที่อยู่ DNS getHostAddress()เมื่อคุณขอ ฉันไม่แน่ใจว่าคุณสามารถบังคับให้ใช้เซิร์ฟเวอร์ DNS เฉพาะได้หรือไม่
— thegrinner

ดังนั้นจึงต้องแก้ไขด้วยตัวเองโดยที่โปรแกรมเมอร์ไม่ได้ระบุที่อยู่เซิร์ฟเวอร์ DNS อย่างชัดเจนใช่ไหม
— Dark Matter

1
@DarkMatter ใช่ ฉันเชื่อว่ามันใช้เซิร์ฟเวอร์ DNS ใดก็ตามที่ตั้งค่าไว้ในคอมพิวเตอร์
— thegrinner


9

คุณสามารถใช้ InetAddress สำหรับสิ่งนี้ ลองใช้รหัสด้านล่าง

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

3

ตามที่แนะนำไว้ข้างต้นคุณสามารถใช้ได้ InetAddress.getByName("hostName")แต่สิ่งนี้สามารถให้ IP ที่แคชไว้อ่านเอกสาร java สำหรับสิ่งเดียวกัน หากคุณต้องการรับ IP จาก DNS คุณสามารถใช้:

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

นอกจากสิ่งที่ @daksh ออกแหลมคุณสามารถปิดการใช้งานแคช DNS ตอบสนองตามที่แนะนำที่นี่แต่จะตระหนักถึงระยะเวลาของการปิดการใช้งานแคชเช่นเดียวกับแคชของการตอบสนอง DNS ทำโดยระบบปฏิบัติการของคุณเช่นเดียวกับเซิร์ฟเวอร์ DNS ที่อื่น ๆ ตามที่แนะนำที่นี่ หวังว่านี่จะช่วยได้
— CrazyGreenHand

ด้วยเหตุผลบางประการการโทรนี้ทำให้ฉันได้ผลลัพธ์ที่ดีสำหรับชื่อโฮสต์ใด ๆ ฉันคิดว่าฉันตั้งค่า IP เป็นค่าเริ่มต้น แต่ไม่เลยมันให้ IP ที่เฉพาะเจาะจงสำหรับโฮสต์ที่ไม่รู้จัก
— Imaskar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.