ホストアドレス情報を取得する
Java では、InetAddress クラスを使用して、ホスト名や数値アドレス情報を含むターゲット ネットワーク アドレスを表します。InetAddress のインスタンスは不変で、各インスタンスは常にアドレスを指します。 InetAddress クラスには、2 つの IP アドレス バージョンに対応する 2 つのサブクラスが含まれています。
次のようにコードをコピーします。
Inet4アドレス
Inet6アドレス
前のメモからわかるように、IP アドレスは実際にはホスト自体ではなく、ホストとネットワーク間の接続に割り当てられます。NetworkInterface クラスは、ホストのすべてのインターフェイス上の情報にアクセスする機能を提供します。以下では、簡単なサンプル プログラムを使用して、ネットワーク ホストのアドレス情報を取得する方法を学習します。
次のようにコードをコピーします。
importjava.net.*;
importjava.util.Enumeration;
publicclassInetAddressExample{
publicstaticvoidmain(String[]args){
//TODO自動生成メソッドスタブ
試す{
//ホストネットワークインターフェースリストを取得する
列挙<NetworkInterface>interfaceList=NetworkInterface
.getNetworkInterfaces();
// インターフェイス リストが空かどうかを確認します。ホストに他のネットワーク接続がない場合でも、ループバック インターフェイス (ループバック) が存在する必要があります。
if(interfaceList==null){
System.out.println("--インターフェイスが見つかりません--");
}それ以外{
while(interfaceList.hasMoreElements()){
//各インターフェースのアドレスを取得して出力します
NetworkInterfaceiface=interfaceList.nextElement();
//インターフェース名を出力します
System.out.println("インターフェイス"+iface.getName()+";");
//インターフェースに関連付けられたアドレスを取得します
Enumeration<InetAddress>addressList=iface
.getInetAddresses();
//空かどうか
if(!addressList.hasMoreElements()){
System.out.println("/t(このインターフェイスに関連するアドレスはありません)");
}
//リストを繰り返し、各アドレスを出力します
while(addressList.hasMoreElements()){
InetAddressaddress=addressList.nextElement();
システムアウト
.print("/tアドレス"
+((Inet4Address のアドレスインスタンス?"(v4)"
:addressinstanceofInet6Address?"v6"
:"(?)")));
System.out.println(":"+address.getHostAddress());
}
}
}
}catch(ソケット例外){
System.out.println("ネットワーク インターフェイス エラーの取得:"+se.getMessage());
}
//コマンドラインから入力された各パラメータに対応するホスト名とアドレスを取得し、リストを繰り返して出力します。
for(Stringhost:args){
試す{
System.out.println(ホスト+":");
InetAddress[]addressList=InetAddress.getAllByName(host);
for(InetAddressアドレス:アドレスリスト){
System.out.println("/t"+address.getHostName()+"/"
+address.getHostAddress());
}
}catch(UnknownHostException){
System.out.println("/tアドレスが見つかりません:"+ホスト);
}
}
}
}