Dapatkan informasi alamat host
Di Java, kami menggunakan kelas InetAddress untuk mewakili alamat jaringan target, termasuk nama host dan informasi alamat numerik, dan instance InetAddress tidak dapat diubah, dan setiap instance selalu menunjuk ke sebuah alamat. Kelas InetAddress berisi dua subkelas, yang sesuai dengan dua versi alamat IP:
Copy kode kodenya sebagai berikut:
Alamat Inet4
Alamat Inet6
Kita dapat mengetahui dari catatan sebelumnya: Alamat IP sebenarnya diberikan pada koneksi antara host dan jaringan, bukan pada host itu sendiri. Kelas NetworkInterface menyediakan fungsi mengakses informasi pada semua antarmuka host. Di bawah ini kami menggunakan contoh program sederhana untuk mempelajari cara memperoleh informasi alamat host jaringan:
Copy kode kodenya sebagai berikut:
importjava.net.*;
importjava.util.Enumeration;
Contoh PublicclassInetAddress{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
mencoba{
//Dapatkan daftar antarmuka jaringan host
Pencacahan<NetworkInterface>interfaceList=NetworkInterface
.getNetworkInterfaces();
//Periksa apakah daftar antarmuka kosong. Meskipun host tidak memiliki koneksi jaringan lain, antarmuka loopback (loopback) harus ada.
jika(daftarantarmuka==null){
System.out.println("--Tidak ditemukan antarmuka--");
}kalau tidak{
while(interfaceList.hasMoreElements()){
//Dapatkan dan cetak alamat setiap antarmuka
NetworkInterfaceiface=interfaceList.nextElement();
//Cetak nama antarmuka
System.out.println("Antarmuka"+iface.getName()+";");
//Dapatkan alamat yang terkait dengan antarmuka
Pencacahan<InetAddress>addressList=iface
.getInetAddresses();
//Apakah itu kosong
if(!addressList.hasMoreElements()){
System.out.println("/t(Tidak ada alamat yang terkait dengan antarmuka ini)");
}
//Iterasi daftar, cetak setiap alamat
while(addressList.hasMoreElements()){
InetAddressaddress=addressList.nextElement();
Sistem.keluar
.print("/tAlamat"
+((alamatinstanceofInet4Alamat?"(v4)"
:addressinstanceofInet6Address?"v6"
:"(?)")));
Sistem.keluar.println(":"+alamat.getHostAddress());
}
}
}
}menangkap(SocketException){
System.out.println("Dapatkan kesalahan antarmuka jaringan:"+se.getMessage());
}
//Dapatkan nama host dan alamat yang sesuai dengan setiap parameter yang dimasukkan dari baris perintah, ulangi daftarnya dan cetak
untuk(Stringhost:args){
mencoba{
Sistem.keluar.println(host+":");
InetAddress[]addressList=InetAddress.getAllByName(host);
for(InetAddressaddress:addressList){
Sistem.keluar.println("/t"+alamat.getHostName()+"/"
+alamat.getHostAddress());
}
}menangkap(UnknownHostExceptione){
System.out.println("/tTidak dapat menemukan alamat:"+host);
}
}
}
}