public final class Inet6Address extends InetAddress
推奨の形式は 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 が完全な形式を返すのは、ほかのテキストデータと組み合わせて使用する場合にも、あいまいにならないからです。
IPv4 マップのアドレス ::ffff:w.x.y.z という形式の IPv6 アドレスは、IPv4 アドレスを表すのに使用されます。このアドレスを利用すると、ネイティブプログラムでは、IPv4 ノードと IPv6 ノードの両方と通信する際に、同じアドレスデータ構造と、さらには同じソケットを使用できます。 InetAddress と Inet6Address では、これは内部の表現に使用され、機能上の役割はありません。Java から IPv4 マップアドレスが返されることはありません。これらのクラスは、バイト配列とテキスト表現の両方で、IPv4 マップアドレスを入力として取ることができます。ただし、そのアドレスは IPv4 アドレスに変換されます。
前述した IPv6 アドレスのテキスト表現を拡張して、IPv6 スコープアドレスを指定できます。基本的なアドレス指定アーキテクチャーに対するこの拡張については、[draft-ietf-ipngwg-scoping-arch-04.txt] を参照してください。
リンクローカルアドレスとサイトローカルアドレスはグローバルではありません。このため、複数のホストが同一の送信先アドレスを持ち、同一の送信元システム上の異なるインタフェース経由でそれらのホストに到達できる可能性があります。この場合、その送信元システムは、同一スコープの複数のゾーンに接続されています。どれが目的の送信先ゾーンであるかを明確にするために、ゾーン識別子 (scope_id) を IPv6 アドレスの末尾に追加することができます。
scope_id の一般的な指定形式は、次のとおりです。
IPv6-address%scope_id
IPv6-address は、前述のリテラル IPv6 アドレスです。scope_id はローカルシステム上のあるインタフェースを参照します。これを指定するには次の 2 つの方法があります。
NetworkInterface.getName()
から返された文字列と正確に一致しなければいけません。Inet6Address がこの方法で作成される場合は、そのオブジェクトを生成するときに関連する NetworkInterface に問い合わせることで、数値のスコープ ID が決定されます。また、NetworkInterface クラスから返された Inet6Address インスタンスから数値 scope_id を取得することもできます。これを使えば、システム上で設定されている現在のスコープ ID を確認できます。
修飾子と型 | メソッドと説明 |
---|---|
boolean |
equals(Object obj)
このオブジェクトと指定されたオブジェクトを比較します。
|
byte[] |
getAddress()
この
InetAddress オブジェクトの生の IP アドレスを返します。 |
static Inet6Address |
getByAddress(String host, byte[] addr, int scope_id)
InetAddress.getByAddress(String,byte[]) とまったく同様にして Inet6Address を作成します。ただし、IPv6 スコープ ID が指定された数値に設定される点は異なります。 |
static Inet6Address |
getByAddress(String host, byte[] addr, NetworkInterface nif)
InetAddress.getByAddress(String,byte[]) とまったく同様にして Inet6Address を作成します。ただし、指定されたインタフェースの addr に指定されたアドレスタイプに対応する値に、IPv6 スコープ ID が設定される点は異なります。 |
String |
getHostAddress()
テキスト表現の IP アドレス文字列を返します。
|
NetworkInterface |
getScopedInterface()
このインスタンスがスコープインタフェースを使って作成された場合、そのスコープインタフェースを返します。
|
int |
getScopeId()
このインスタンスがインタフェースに関連付けられている場合は、数値スコープ ID を返します。
|
int |
hashCode()
この IP アドレスのハッシュコードを返します。
|
boolean |
isAnyLocalAddress()
InetAddress がワイルドカードアドレスかどうかを調べるユーティリティールーチンです。
|
boolean |
isIPv4CompatibleAddress()
InetAddress が IPv4 互換の IPv6 アドレスかどうかを調べるユーティリティールーチンです。
|
boolean |
isLinkLocalAddress()
InetAddress がリンクローカルアドレスかどうかを調べるユーティリティールーチンです。
|
boolean |
isLoopbackAddress()
InetAddress がループバックアドレスかどうかを調べるユーティリティールーチンです。
|
boolean |
isMCGlobal()
マルチキャストアドレスにグローバルスコープがあるかどうかを調べるユーティリティールーチンです。
|
boolean |
isMCLinkLocal()
マルチキャストアドレスにリンクスコープがあるかどうかを調べるユーティリティールーチンです。
|
boolean |
isMCNodeLocal()
マルチキャストアドレスにノードスコープがあるかどうかを調べるユーティリティールーチンです。
|
boolean |
isMCOrgLocal()
マルチキャストアドレスに組織スコープがあるかどうかを調べるユーティリティールーチンです。
|
boolean |
isMCSiteLocal()
マルチキャストアドレスにサイトスコープがあるかどうかを調べるユーティリティールーチンです。
|
boolean |
isMulticastAddress()
InetAddress が IP マルチキャストアドレスかどうかを調べるユーティリティールーチンです。
|
boolean |
isSiteLocalAddress()
InetAddress がサイトローカルアドレスかどうかを調べるユーティリティールーチンです。
|
getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, getLoopbackAddress, isReachable, isReachable, toString
public static Inet6Address getByAddress(String host, byte[] addr, NetworkInterface nif) throws UnknownHostException
InetAddress.getByAddress(String,byte[])
とまったく同様にして Inet6Address を作成します。ただし、指定されたインタフェースの addr
に指定されたアドレスタイプに対応する値に、IPv6 スコープ ID が設定される点は異なります。指定されたアドレスタイプ (リンクローカルやサイトローカルなど) に割り当てられた数値スコープ ID が指定されたインタフェースに存在しない場合、この呼び出しは UnknownHostException で失敗します。IPv6 スコープアドレスについては、ここを参照してください。host
- 指定されたホストaddr
- ネットワークバイトオーダーの IP アドレスnif
− このアドレスを関連付ける必要のあるインタフェース。UnknownHostException
− IP アドレスの長さが正しくない場合、または指定されたアドレスタイプに割り当てられた数値スコープ ID がインタフェースに存在しない場合。public static Inet6Address getByAddress(String host, byte[] addr, int scope_id) throws UnknownHostException
InetAddress.getByAddress(String,byte[])
とまったく同様にして Inet6Address を作成します。ただし、IPv6 スコープ ID が指定された数値に設定される点は異なります。このスコープ ID に対応するインタフェースがシステム上に存在するかどうかのチェックは行われません。IPv6 スコープアドレスについては、ここを参照してください。host
- 指定されたホストaddr
- ネットワークバイトオーダーの IP アドレスscope_id
− このアドレスに対応する数値スコープ ID。UnknownHostException
- IP アドレスの長さが不正の場合。public boolean isMulticastAddress()
isMulticastAddress
、クラス: InetAddress
boolean
public boolean isAnyLocalAddress()
isAnyLocalAddress
、クラス: InetAddress
boolean
。public boolean isLoopbackAddress()
isLoopbackAddress
、クラス: InetAddress
boolean
。ループバックアドレスでない場合は false。public boolean isLinkLocalAddress()
isLinkLocalAddress
、クラス: InetAddress
boolean
。アドレスがリンクローカルユニキャストアドレスでない場合は false。public boolean isSiteLocalAddress()
isSiteLocalAddress
、クラス: InetAddress
boolean
。アドレスがサイトローカルユニキャストアドレスでない場合は false。public boolean isMCGlobal()
isMCGlobal
、クラス: InetAddress
boolean
。それがグローバルスコープのアドレスでないかマルチキャストアドレスでない場合は falsepublic boolean isMCNodeLocal()
isMCNodeLocal
、クラス: InetAddress
boolean
。それがノードローカルスコープのアドレスでないかマルチキャストアドレスでない場合は falsepublic boolean isMCLinkLocal()
isMCLinkLocal
、クラス: InetAddress
boolean
。それがリンクローカルスコープのアドレスでないかマルチキャストアドレスでない場合は falsepublic boolean isMCSiteLocal()
isMCSiteLocal
、クラス: InetAddress
boolean
。それがサイトローカルスコープのアドレスでないかマルチキャストアドレスでない場合は falsepublic boolean isMCOrgLocal()
isMCOrgLocal
、クラス: InetAddress
boolean
。それが組織ローカルスコープのアドレスでないかマルチキャストアドレスでない場合は falsepublic byte[] getAddress()
InetAddress
オブジェクトの生の IP アドレスを返します。その結果はネットワークバイト順序になります。アドレスの最上位順序バイトは getAddress()[0]
.内に存在します。getAddress
、クラス: InetAddress
public int getScopeId()
public NetworkInterface getScopedInterface()
public String getHostAddress()
getHostAddress
、クラス: InetAddress
public int hashCode()
hashCode
、クラス: InetAddress
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
null
ではなく、その引数がこのオブジェクトと同じ IP アドレスを表す場合にだけ、結果が true
になります。
getAddress
によって返されるバイト配列の長さが同じであり、バイト配列の各コンポーネントが同じである場合、2 つの InetAddress
のインスタンスは同じ IP アドレスを表しています。
equals
、クラス: InetAddress
obj
- 比較対象のオブジェクト。true
、そうでない場合は false
。InetAddress.getAddress()
public boolean isIPv4CompatibleAddress()
boolean
。アドレスが IPv4 アドレスである場合は false。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.