- すべての実装されたインタフェース:
- Serializable
public final class Inet6Address extends InetAddress
IPアドレスのテキスト表現
メソッドの入力として使用されるIPv6アドレスのテキスト表現は、次のいずれかの形式になります。- 推奨の形式はx:x:x:x:x:x:x:xです。ここで、「x」は、アドレスを8つの16ビット部分に分けて16進数で表した値です。 これは完全な形式です。 次に例を示します。 - 1080:0:0:0:8:800:200C:417A
 - 各フィールド内の先頭部分のゼロは記述する必要がない点に注意してください。 ただし、次に説明する場合を除いて、各フィールドには少なくとも1つの数値が必要です。 
- 特定スタイルのIPv6アドレスを割り当てるためのいくつかの方式が原因となり、アドレス内にゼロ・ビットの長い列が含まれることがよくあります。 ゼロ・ビットを含むアドレスを記述しやすくするため、ゼロを圧縮する特殊な構文が利用できます。 「::」の使用は、ゼロだけから成る16ビットのグループが複数存在することを示します。 「::」は、1つのアドレス内で1回しか使えません。 また、「::」を使えば、アドレス内の先頭のゼロまたは末尾のゼロ、あるいはその両方を圧縮することもできます。 次に例を示します。 - 1080::8:800:200C:417A
 
- IPv4およびIPv6ノードが混在する環境に対応する場合にさらに便利な代替形式がx:x:x:x:x:x:d.d.d.dです。ここで、xは上位6つの16ビット・アドレスの16進数値で、dは下位4つの8ビット標準IPv4表現アドレスの10進数値です。次に例を示します。 - ::FFFF:129.144.52.38
- ::129.144.52.38
 - ここで、「::FFFF:d.d.d.d」と「::d.d.d.d」はそれぞれ、一般的な形式のIPv4マップIPv6アドレスとIPv4互換IPv6アドレスです。 IPv4部分は「d.d.d.d」の形式でなければいけない点に注意してください。 次の形式は無効です。 - ::FFFF:d.d.d
- ::FFFF:d.d
- ::d.d.d
- ::d.d
 - 次の形式は有効です。 - ::FFFF:d
 - ただし、これは、次のIPv4互換IPv6アドレスの、慣例に従わない表現です。 - ::255.255.0.d
 - ここで、「::d」は一般的なIPv6アドレス「0:0:0:0:0:0:0:d」に対応します。 
テキスト表現を出力値として返すメソッドでは、完全な形式が使用されます。 Inet6Addressが完全な形式を返すのは、ほかのテキスト・データと組み合わせて使用する場合にも、あいまいにならないからです。
特殊なIPv6アドレス
IPv4マップのアドレス ::ffff:w.x.y.zの形式のうち、このIPv6アドレスはIPv4アドレスを表すために使用されます。 このアドレスを利用すると、ネイティブ・プログラムでは、IPv4ノードとIPv6ノードの両方と通信する際に、同じアドレス・データ構造と、さらには同じソケットを使用できます。 InetAddressとInet6Addressでは、これは内部の表現に使用され、機能上の役割はありません。 JavaからIPv4マップ・アドレスが返されることはありません。 これらのクラスは、バイト配列とテキスト表現の両方で、IPv4マップ・アドレスを入力として取ることができます。 ただし、そのアドレスはIPv4アドレスに変換されます。
IPv6スコープ・アドレスのテキスト表現
前述したIPv6アドレスのテキスト表現を拡張して、IPv6スコープ・アドレスを指定できます。 基本的なアドレス指定アーキテクチャに対するこの拡張については、[draft-ietf-ipngwg-scoping-arch-04.txt]を参照してください。
リンク・ローカル・アドレスとサイト・ローカル・アドレスはグローバルではありません。このため、複数のホストが同一の送信先アドレスを持ち、同一の送信元システム上の異なるインタフェース経由でそれらのホストに到達できる可能性があります。 この場合、その送信元システムは、同一スコープの複数のゾーンに接続されています。 どれが目的の送信先ゾーンであるかを明確にするために、ゾーン識別子(scope_id)をIPv6アドレスの末尾に追加することができます。
scope_idの一般的な指定形式は、次のとおりです。
IPv6-address%scope_id
IPv6-addressは、前述のリテラルIPv6アドレスです。 scope_idはローカル・システム上のあるインタフェースを参照します。これを指定するには次の2つの方法があります。
- 数値識別子として指定。 これは、システムが認識できる特定のインタフェースとスコープを識別する正の整数である必要があります。 この数値は通常、システム上の管理ツールを使用することで決定できます。 各インタフェースは、スコープごとに1つずつ、複数の値を持つことができます。 スコープが未指定の場合、使用されるデフォルト値はゼロです。
- 文字列として指定する。 これは、対象となる特定のインタフェースに対してNetworkInterface.getName()から返された文字列と正確に一致しなければいけません。 Inet6Addressがこの方法で作成される場合は、そのオブジェクトを生成するときに関連するNetworkInterfaceに問い合わせることで、数値のスコープIDが決定されます。
また、NetworkInterfaceクラスから返されたInet6Addressインスタンスから数値scope_idを取得することもできます。 これを使えば、システム上で設定されている現在のスコープIDを確認できます。
- 導入されたバージョン:
- 1.4
- 関連項目:
- 直列化された形式
- 
メソッドのサマリー修飾子と型 メソッド 説明 booleanequals(Object obj)このオブジェクトと指定されたオブジェクトを比較します。byte[]getAddress()このInetAddressオブジェクトの生のIPアドレスを返します。static Inet6AddressgetByAddress(String host, byte[] addr, int scope_id)InetAddress.getByAddress(String,byte[])とまったく同様にしてInet6Addressを作成します。ただし、IPv6スコープIDが指定された数値に設定される点は異なります。static Inet6AddressgetByAddress(String host, byte[] addr, NetworkInterface nif)InetAddress.getByAddress(String,byte[])とまったく同様にしてInet6Addressを作成します。ただし、指定されたインタフェースのaddrに指定されたアドレス・タイプに対応する値に、IPv6スコープIDが設定される点は異なります。StringgetHostAddress()テキスト表現のIPアドレス文字列を返します。NetworkInterfacegetScopedInterface()スコープ指定インタフェースを使用してこのインスタンスが作成された場合は、スコープ指定インタフェースを返します。intgetScopeId()このインスタンスがインタフェースに関連付けられている場合は、数値スコープIDを返します。inthashCode()このIPアドレスのハッシュ・コードを返します。booleanisAnyLocalAddress()InetAddressがワイルドカード・アドレスかどうかを調べるユーティリティ・ルーチン。booleanisIPv4CompatibleAddress()InetAddressがIPv4互換のIPv6アドレスかどうかを調べるユーティリティ・ルーチンです。booleanisLinkLocalAddress()InetAddressがリンク・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。booleanisLoopbackAddress()InetAddressがループバック・アドレスかどうかを調べるユーティリティ・ルーチンです。booleanisMCGlobal()マルチキャスト・アドレスにグローバル・スコープがあるかどうかを調べるユーティリティ・ルーチンです。booleanisMCLinkLocal()マルチキャスト・アドレスにリンク・スコープがあるかどうかを調べるユーティリティ・ルーチンです。booleanisMCNodeLocal()マルチキャスト・アドレスにノード・スコープがあるかどうかを調べるユーティリティ・ルーチンです。booleanisMCOrgLocal()マルチキャスト・アドレスに組織スコープがあるかどうかを調べるユーティリティ・ルーチンです。booleanisMCSiteLocal()マルチキャスト・アドレスにサイト・スコープがあるかどうかを調べるユーティリティ・ルーチンです。booleanisMulticastAddress()InetAddressがIPマルチキャスト・アドレスかどうかを調べるユーティリティ・ルーチンです。アドレスの先頭が11111111になっていれば、そのアドレスはマルチキャスト・アドレスです。booleanisSiteLocalAddress()InetAddressがサイト・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。クラス java.net.InetAddressで宣言されたメソッドgetAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, getLoopbackAddress, isReachable, isReachable, toString
- 
メソッドの詳細- 
getByAddresspublic static Inet6Address getByAddress(String host, byte[] addr, NetworkInterface nif) throws UnknownHostExceptionInetAddress.getByAddress(String,byte[])とまったく同様にしてInet6Addressを作成します。ただし、指定されたインタフェースのaddrに指定されたアドレス・タイプに対応する値に、IPv6スコープIDが設定される点は異なります。 指定されたインタフェースに、指定されたアドレス・タイプ(例:リンク・ローカルまたはサイト・ローカル)に割り当てられた数値scope_idがない場合、この呼び出しはUnknownHostExceptionで失敗します。 IPv6スコープ・アドレスについては、ここを参照してください。- パラメータ:
- host- 指定されたホスト
- addr- ネットワーク・バイト・オーダーのIPアドレス
- nif−このアドレスを関連付ける必要のあるインタフェース。
- 戻り値:
- 生のIPアドレスから生成されたInet6Addressオブジェクト。
- 例外:
- UnknownHostException−IPアドレスの長さが正しくない場合、または指定されたアドレス・タイプに割り当てられた数値スコープIDがインタフェースに存在しない場合。
- 導入されたバージョン:
- 1.5
 
- 
getByAddresspublic static Inet6Address getByAddress(String host, byte[] addr, int scope_id) throws UnknownHostExceptionInetAddress.getByAddress(String,byte[])とまったく同様にしてInet6Addressを作成します。ただし、IPv6スコープIDが指定された数値に設定される点は異なります。 このスコープIDに対応するインタフェースがシステム上に存在するかどうかのチェックは行われません。 IPv6スコープ・アドレスについては、ここを参照してください。- パラメータ:
- host- 指定されたホスト
- addr- ネットワーク・バイト・オーダーのIPアドレス
- scope_id−このアドレスに対応する数値スコープID。
- 戻り値:
- 生のIPアドレスから生成されたInet6Addressオブジェクト。
- 例外:
- UnknownHostException- IPアドレスの長さが不正の場合。
- 導入されたバージョン:
- 1.5
 
- 
isMulticastAddresspublic boolean isMulticastAddress()InetAddressがIPマルチキャスト・アドレスかどうかを調べるユーティリティ・ルーチンです。アドレスの先頭が11111111になっていれば、そのアドレスはマルチキャスト・アドレスです。- オーバーライド:
- isMulticastAddress、クラス:- InetAddress
- 戻り値:
- InetAddressがIPマルチキャスト・アドレスかどうかを示すboolean
 
- 
isAnyLocalAddresspublic boolean isAnyLocalAddress()InetAddressがワイルドカード・アドレスかどうかを調べるユーティリティ・ルーチン。- オーバーライド:
- isAnyLocalAddress、クラス:- InetAddress
- 戻り値:
- InetAddressがワイルドカードのアドレスかどうかを示すboolean。
 
- 
isLoopbackAddresspublic boolean isLoopbackAddress()InetAddressがループバック・アドレスかどうかを調べるユーティリティ・ルーチンです。- オーバーライド:
- isLoopbackAddress、クラス:- InetAddress
- 戻り値:
- InetAddressがループバック・アドレスかどうかを示すboolean。ループバック・アドレスでない場合はfalse。
 
- 
isLinkLocalAddresspublic boolean isLinkLocalAddress()InetAddressがリンク・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。- オーバーライド:
- isLinkLocalAddress、クラス:- InetAddress
- 戻り値:
- InetAddressがリンク・ローカル・アドレスかどうかを示すboolean。アドレスがリンク・ローカル・ユニキャスト・アドレスでない場合はfalse。
 
- 
isSiteLocalAddresspublic boolean isSiteLocalAddress()InetAddressがサイト・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。- オーバーライド:
- isSiteLocalAddress、クラス:- InetAddress
- 戻り値:
- InetAddressがサイト・ローカル・アドレスかどうかを示すboolean。アドレスがサイト・ローカル・ユニキャスト・アドレスでない場合はfalse。
 
- 
isMCGlobalpublic boolean isMCGlobal()マルチキャスト・アドレスにグローバル・スコープがあるかどうかを調べるユーティリティ・ルーチンです。- オーバーライド:
- isMCGlobal、クラス:- InetAddress
- 戻り値:
- アドレスがグローバル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それがグローバル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
 
- 
isMCNodeLocalpublic boolean isMCNodeLocal()マルチキャスト・アドレスにノード・スコープがあるかどうかを調べるユーティリティ・ルーチンです。- オーバーライド:
- isMCNodeLocal、クラス:- InetAddress
- 戻り値:
- アドレスがノード・ローカル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それがノード・ローカル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
 
- 
isMCLinkLocalpublic boolean isMCLinkLocal()マルチキャスト・アドレスにリンク・スコープがあるかどうかを調べるユーティリティ・ルーチンです。- オーバーライド:
- isMCLinkLocal、クラス:- InetAddress
- 戻り値:
- アドレスがリンク・ローカル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それがリンク・ローカル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
 
- 
isMCSiteLocalpublic boolean isMCSiteLocal()マルチキャスト・アドレスにサイト・スコープがあるかどうかを調べるユーティリティ・ルーチンです。- オーバーライド:
- isMCSiteLocal、クラス:- InetAddress
- 戻り値:
- アドレスがサイト・ローカル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それがサイト・ローカル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
 
- 
isMCOrgLocalpublic boolean isMCOrgLocal()マルチキャスト・アドレスに組織スコープがあるかどうかを調べるユーティリティ・ルーチンです。- オーバーライド:
- isMCOrgLocal、クラス:- InetAddress
- 戻り値:
- アドレスが組織ローカル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それが組織ローカル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
 
- 
getAddresspublic byte[] getAddress()このInetAddressオブジェクトの生のIPアドレスを返します。 その結果はネットワーク・バイト順序になります。アドレスの最上位順序バイトはgetAddress()[0].内に存在します。- オーバーライド:
- getAddress、クラス:- InetAddress
- 戻り値:
- このオブジェクトのIPアドレス。
 
- 
getScopeIdpublic int getScopeId()このインスタンスがインタフェースに関連付けられている場合は、数値スコープIDを返します。 スコープIDが設定されていない場合、戻り値はゼロになります。- 戻り値:
- スコープID。設定されていない場合はゼロ。
- 導入されたバージョン:
- 1.5
 
- 
getScopedInterfacepublic NetworkInterface getScopedInterface()スコープ指定インタフェースを使用してこのインスタンスが作成された場合は、スコープ指定インタフェースを返します。- 戻り値:
- スコープ・インタフェース。設定されていない場合はnull。
- 導入されたバージョン:
- 1.5
 
- 
getHostAddresspublic String getHostAddress()テキスト表現のIPアドレス文字列を返します。 スコープ識別子を指定してインスタンスが作成された場合、そのスコープIDがIPアドレスの末尾に追加されます。その際、スコープIDの先頭に「%」(パーセント)文字が付けられます。 これは数値と文字列のいずれかになりますが、どちらになるかは、インスタンスの作成時にどちらが使用されたかによって決まります。- オーバーライド:
- getHostAddress、クラス:- InetAddress
- 戻り値:
- IPアドレスの文字列形式。
 
- 
hashCodepublic int hashCode()このIPアドレスのハッシュ・コードを返します。- オーバーライド:
- hashCode、クラス:- InetAddress
- 戻り値:
- このIPアドレスのハッシュ・コード値。
- 関連項目:
- Object.equals(java.lang.Object),- System.identityHashCode(java.lang.Object)
 
- 
equalspublic boolean equals(Object obj)このオブジェクトと指定されたオブジェクトを比較します。 引数がnullではなく、その引数がこのオブジェクトと同じIPアドレスを表す場合にだけ、結果がtrueになります。getAddressによって返されるバイト配列の長さが同じであり、バイト配列の各コンポーネントが同じである場合、2つのInetAddressのインスタンスは同じIPアドレスを表しています。- オーバーライド:
- equals、クラス:- InetAddress
- パラメータ:
- obj- 比較対象のオブジェクト。
- 戻り値:
- オブジェクトが同じである場合はtrue、そうでない場合はfalse。
- 関連項目:
- InetAddress.getAddress()
 
- 
isIPv4CompatibleAddresspublic boolean isIPv4CompatibleAddress()InetAddressがIPv4互換のIPv6アドレスかどうかを調べるユーティリティ・ルーチンです。- 戻り値:
- InetAddressがIPv4互換IPv6アドレスかどうかを示すboolean。アドレスがIPv4アドレスである場合はfalse。
 
 
-