รับข้อมูลที่อยู่โฮสต์
ใน Java เราใช้คลาส InetAddress เพื่อแสดงที่อยู่เครือข่ายเป้าหมาย รวมถึงชื่อโฮสต์และข้อมูลที่อยู่ที่เป็นตัวเลข และอินสแตนซ์ของ InetAddress นั้นไม่เปลี่ยนรูป และแต่ละอินสแตนซ์จะชี้ไปยังที่อยู่เสมอ คลาส InetAddress ประกอบด้วยคลาสย่อยสองคลาส ซึ่งสอดคล้องกับเวอร์ชันที่อยู่ IP สองเวอร์ชัน:
คัดลอกรหัสรหัสดังต่อไปนี้:
ที่อยู่ Inet4
Inet6ที่อยู่
เราสามารถทราบได้จากหมายเหตุก่อนหน้านี้: จริงๆ แล้วที่อยู่ IP ถูกกำหนดให้กับการเชื่อมต่อระหว่างโฮสต์และเครือข่าย ไม่ใช่ตัวโฮสต์เอง คลาส NetworkInterface มีฟังก์ชันในการเข้าถึงข้อมูลบนอินเทอร์เฟซทั้งหมดของโฮสต์ ด้านล่างเราใช้โปรแกรมตัวอย่างง่ายๆ เพื่อเรียนรู้วิธีรับข้อมูลที่อยู่ของโฮสต์เครือข่าย:
คัดลอกรหัสรหัสดังต่อไปนี้:
importjava.net.*;
importjava.util.แจงนับ;
publicclassInetAddressตัวอย่าง{
publicstaticvoidmain (สตริง [] args) {
//TODOวิธีสร้างอัตโนมัติ
พยายาม{
//รับรายการอินเทอร์เฟซเครือข่ายโฮสต์
การแจงนับ <NetworkInterface>interfaceList=NetworkInterface
.getNetworkInterfaces();
//ตรวจสอบว่ารายการอินเทอร์เฟซว่างเปล่า แม้ว่าโฮสต์จะไม่มีการเชื่อมต่อเครือข่ายอื่น ๆ ก็ตาม อินเทอร์เฟซแบบย้อนกลับ (แบบวนกลับ) ควรมีอยู่
ถ้า (interfaceList==null){
System.out.println("--ไม่พบอินเทอร์เฟซ--");
}อื่น{
ในขณะที่ (interfaceList.hasMoreElements()){
//รับและพิมพ์ที่อยู่ของแต่ละอินเทอร์เฟซ
NetworkInterfaceiface=interfaceList.nextElement();
// พิมพ์ชื่ออินเทอร์เฟซ
System.out.println("อินเทอร์เฟซ"+iface.getName()+";");
//รับที่อยู่ที่เกี่ยวข้องกับอินเทอร์เฟซ
การแจงนับ <InetAddress>addressList=iface
.getInetAddresses();
//ว่างหรือเปล่า.
ถ้า(!addressList.hasMoreElements()){
System.out.println("/t(ไม่มีที่อยู่ที่เกี่ยวข้องกับอินเทอร์เฟซนี้)");
-
//วนซ้ำรายการ พิมพ์ที่อยู่แต่ละรายการ
ในขณะที่ (addressList.hasMoreElements()){
InetAddressaddress=addressList.nextElement();
ระบบออก
.print("/tAddress"
+((ที่อยู่อินสแตนซ์ของ Inet4Address?"(v4)"
:addressinstanceofInet6Address?"v6"
-
System.out.println(″+address.getHostAddress());
-
-
-
} จับ (SocketException){
System.out.println("รับข้อผิดพลาดอินเทอร์เฟซเครือข่าย:"+se.getMessage());
-
//รับชื่อโฮสต์และที่อยู่ที่เกี่ยวข้องกับแต่ละพารามิเตอร์ที่ป้อนจากบรรทัดคำสั่ง วนซ้ำรายการและพิมพ์
สำหรับ(Stringhost:args){
พยายาม{
System.out.println(โฮสต์+::);
InetAddress[]addressList=InetAddress.getAllByName(โฮสต์);
สำหรับ (InetAddressaddress:addressList){
System.out.println("/t"+address.getHostName()+"/"
+address.getHostAddress());
-
} จับ (UnknownHostExceptione){
System.out.println("/tไม่สามารถค้นหาที่อยู่:"+host);
-
-
-
-