Informationen zur Hostadresse abrufen
In Java verwenden wir die InetAddress-Klasse, um die Zielnetzwerkadresse darzustellen, einschließlich Hostname und numerischen Adressinformationen. Instanzen von InetAddress sind unveränderlich und jede Instanz zeigt immer auf eine Adresse. Die InetAddress-Klasse enthält zwei Unterklassen, die zwei IP-Adressversionen entsprechen:
Kopieren Sie den Codecode wie folgt:
Inet4Address
Inet6Adresse
Aus den vorherigen Hinweisen können wir erkennen: IP-Adressen werden tatsächlich der Verbindung zwischen dem Host und dem Netzwerk zugewiesen und nicht dem Host selbst. Die NetworkInterface-Klasse bietet die Funktion, auf Informationen über alle Schnittstellen des Hosts zuzugreifen. Im Folgenden erfahren Sie anhand eines einfachen Beispielprogramms, wie Sie die Adressinformationen eines Netzwerkhosts erhalten:
Kopieren Sie den Codecode wie folgt:
importjava.net.*;
importjava.util.Enumeration;
publicclassInetAddressExample{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
versuchen{
//Liste der Host-Netzwerkschnittstellen abrufen
Enumeration<NetworkInterface>interfaceList=NetworkInterface
.getNetworkInterfaces();
//Überprüfen Sie, ob die Schnittstellenliste leer ist. Auch wenn der Host keine anderen Netzwerkverbindungen hat, sollte die Loopback-Schnittstelle (Loopback) vorhanden sein.
if(interfaceList==null){
System.out.println("--Keine Schnittstelle gefunden--");
}anders{
while(interfaceList.hasMoreElements()){
//Die Adresse jeder Schnittstelle abrufen und ausdrucken
NetworkInterfaceiface=interfaceList.nextElement();
//Schnittstellennamen drucken
System.out.println("Interface"+iface.getName()+";");
//Rufen Sie die mit der Schnittstelle verknüpfte Adresse ab
Enumeration<InetAddress>addressList=iface
.getInetAddresses();
//Ob es leer ist
if(!addressList.hasMoreElements()){
System.out.println("/t(Es gibt keine Adresse für diese Schnittstelle)");
}
//Iteration der Liste, jede Adresse ausdrucken
while(addressList.hasMoreElements()){
InetAddressaddress=addressList.nextElement();
System.out
.print("/tAddress"
+((addressinstanceofInet4Address?"(v4)"
:addressinstanceofInet6Address?"v6"
:"(?)")));
System.out.println(":"+address.getHostAddress());
}
}
}
}catch(SocketException){
System.out.println("Netzwerkschnittstellenfehler abrufen:"+se.getMessage());
}
//Erhalten Sie den Hostnamen und die Adresse, die jedem über die Befehlszeile eingegebenen Parameter entsprechen, iterieren Sie die Liste und drucken Sie sie aus
for(Stringhost:args){
versuchen{
System.out.println(host+":");
InetAddress[]addressList=InetAddress.getAllByName(host);
for(InetAddressaddress:addressList){
System.out.println("/t"+address.getHostName()+"/"
+address.getHostAddress());
}
}catch(UnknownHostExceptione){
System.out.println("/tAdresse konnte nicht gefunden werden:"+host);
}
}
}
}