Obtenir des informations sur l'adresse de l'hôte
En Java, nous utilisons la classe InetAddress pour représenter l'adresse réseau cible, y compris le nom d'hôte et les informations d'adresse numérique, et les instances d'InetAddress sont immuables et chaque instance pointe toujours vers une adresse. La classe InetAddress contient deux sous-classes, correspondant à deux versions d'adresse IP :
Copiez le code comme suit :
Inet4Adresse
Adresse Inet6
Nous pouvons le savoir grâce aux notes précédentes : les adresses IP sont en fait attribuées à la connexion entre l'hôte et le réseau, plutôt qu'à l'hôte lui-même. La classe NetworkInterface assure la fonction d'accéder aux informations sur toutes les interfaces de l'hôte. Ci-dessous, nous utilisons un exemple de programme simple pour apprendre à obtenir les informations d'adresse d'un hôte réseau :
Copiez le code comme suit :
importjava.net.*;
importjava.util.Enumeration;
publicclassInetAddressExample{
publicstaticvoidmain(String[]args){
//TODOStub de méthode généré automatiquement
essayer{
//Obtenir la liste des interfaces réseau hôtes
Énumération<NetworkInterface>interfaceList=NetworkInterface
.getNetworkInterfaces();
// Vérifiez si la liste des interfaces est vide. Même si l'hôte ne dispose d'aucune autre connexion réseau, l'interface de bouclage (bouclage) doit exister.
si(interfaceList==null){
System.out.println("--Aucune interface trouvée--");
}autre{
while(interfaceList.hasMoreElements()){
//Récupère et imprime l'adresse de chaque interface
NetworkInterfaceiface=interfaceList.nextElement();
//Nom de l'interface d'impression
System.out.println("Interface"+iface.getName()+";");
//Récupère l'adresse associée à l'interface
Énumération<InetAddress>addressList=iface
.getInetAddresses();
//Qu'il soit vide
if(!addressList.hasMoreElements()){
System.out.println("/t(Il n'y a aucune adresse liée à cette interface)");
}
//Itération de la liste, imprimer chaque adresse
while(addressList.hasMoreElements()){
InetAddressaddress=addressList.nextElement();
Système.out
.print("/tAdresse"
+((adresseinstancedeInet4Adresse?"(v4)"
:adresseinstancedeInet6Adresse?"v6"
:"(?)")));
System.out.println(":"+address.getHostAddress());
}
}
}
}catch(SocketException){
System.out.println("Obtenir l'erreur d'interface réseau :"+se.getMessage());
}
//Obtenir le nom d'hôte et l'adresse correspondant à chaque paramètre saisi depuis la ligne de commande, parcourir la liste et imprimer
pour(Stringhost:args){
essayer{
System.out.println(hôte+":");
InetAddress[]addressList=InetAddress.getAllByName(hôte);
pour (InetAddressaddress:addressList){
System.out.println("/t"+address.getHostName()+"/"
+adresse.getHostAddress());
}
}catch(UnknownHostExceptione){
System.out.println("/tImpossible de trouver l'adresse :"+hôte);
}
}
}
}