JavaTM Platform
Standard Ed. 6

java.net
クラス Inet6Address

java.lang.Object
  上位を拡張 java.net.InetAddress
      上位を拡張 java.net.Inet6Address
すべての実装されたインタフェース:
Serializable

public final class Inet6Address
extends InetAddress

このクラスは、インターネットプロトコルバージョン 6 (IPv6) アドレスを表します。「RFC 2373: IP Version 6 Addressing Architecture」で定義されています。

IP アドレスのテキスト表現

メソッドの入力として使用される Ipv6 アドレスのテキスト表現は、次のいずれかの形式になります。
  1. 推奨の形式は x:x:x:x:x:x:x:x です。ここで、「x」は、アドレスを 8 つの 16 ビット部分に分けて 16 進数で表した値です。これは完全な形式です。次に例を示します。

    1080:0:0:0:8:800:200C:417A

    各フィールド内の先頭部分のゼロは記述する必要がない点に注意してください。ただし、次に説明する場合を除いて、各フィールドには少なくとも 1 つの数値が必要です。

  2. 特定スタイルの IPv6 アドレスを割り当てるためのいくつかの方式が原因となり、アドレス内にゼロビットの長い列が含まれることがよくあります。ゼロビットを含むアドレスを記述しやすくするため、ゼロを圧縮する特殊な構文が利用できます。「::」の使用は、ゼロだけから成る 16 ビットのグループが複数存在することを示します。「::」は、1 つのアドレス内で 1 回しか使えません。また、「::」を使えば、アドレス内の先頭のゼロまたは末尾のゼロ、あるいはその両方を圧縮することもできます。次に例を示します。

    1080::8:800:200C:417A
  3. 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. 数値識別子として指定。 これは、システムが認識できる特定のインタフェースとスコープを識別する正の整数でなければなりません。この数値は通常、システム上の管理ツールを使用することで決定できます。各インタフェースは、スコープごとに 1 つずつ、複数の値を持つことができます。スコープが未指定の場合、使用されるデフォルト値はゼロです。
  2. 文字列として指定する。 これは、対象となる特定のインタフェースに対して NetworkInterface.getName() から返された文字列と正確に一致しなければなりません。Inet6Address がこの方法で作成される場合は、そのオブジェクトを生成するときに関連する NetworkInterface に問い合わせることで、数値のスコープ ID が決定されます。

また、NetworkInterface クラスから返された Inet6Address インスタンスから数値 scope_id を取得することもできます。これを使えば、システム上で設定されている現在のスコープ ID を確認できます。

導入されたバージョン:
1.4
関連項目:
直列化された形式

メソッドの概要
 boolean equals(Object obj)
          オブジェクトと指定されたオブジェクトを比較します。
 byte[] getAddress()
          この InetAddress オブジェクトの生の IP アドレスを返します。
static Inet6Address getByAddress(String host, byte[] addr, int scope_id)
          InetAddress.getByAddress(String,byte[]) とまったく同様にして Inet6Address を作成します。
static Inet6Address getByAddress(String host, byte[] addr, NetworkInterface nif)
          InetAddress.getByAddress(String,byte[]) とまったく同様にして Inet6Address を作成します。
 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 がサイトローカルアドレスかどうかを調べるユーティリティールーチンです。
 
クラス java.net.InetAddress から継承されたメソッド
getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, isReachable, isReachable, toString
 
クラス java.lang.Object から継承されたメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

メソッドの詳細

getByAddress

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 - このアドレスを関連付ける必要のあるインタフェース
戻り値:
生の IP アドレスから生成された Inet6Address オブジェクト
例外:
UnknownHostException - IP アドレスの長さが正しくない場合、または指定されたアドレスタイプに割り当てられた数値スコープ ID がインタフェースに存在しない場合
導入されたバージョン:
1.5

getByAddress

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
戻り値:
生の IP アドレスから生成された Inet6Address オブジェクト
例外:
UnknownHostException - IP アドレスの長さが不正の場合
導入されたバージョン:
1.5

isMulticastAddress

public boolean isMulticastAddress()
InetAddress が IP マルチキャストアドレスかどうかを調べるユーティリティールーチンです。アドレスの先頭が 11111111 になっていれば、そのアドレスはマルチキャストアドレスです。

オーバーライド:
クラス InetAddress 内の isMulticastAddress
戻り値:
InetAddress が IP マルチキャストアドレスかどうかを示す boolean
導入されたバージョン:
JDK1.1

isAnyLocalAddress

public boolean isAnyLocalAddress()
InetAddress がワイルドカードアドレスかどうかを調べるユーティリティールーチンです。

オーバーライド:
クラス InetAddress 内の isAnyLocalAddress
戻り値:
InetAddress がワイルドカードアドレスかどうかを示す boolean
導入されたバージョン:
1.4

isLoopbackAddress

public boolean isLoopbackAddress()
InetAddress がループバックアドレスかどうかを調べるユーティリティールーチンです。

オーバーライド:
クラス InetAddress 内の isLoopbackAddress
戻り値:
InetAddress がループバックアドレスかどうかを示す boolean。ループバックアドレスでない場合は false
導入されたバージョン:
1.4

isLinkLocalAddress

public boolean isLinkLocalAddress()
InetAddress がリンクローカルアドレスかどうかを調べるユーティリティールーチンです。

オーバーライド:
クラス InetAddress 内の isLinkLocalAddress
戻り値:
InetAddress がリンクローカルアドレスかどうかを示す boolean。アドレスがリンクローカルユニキャストアドレスでない場合は false
導入されたバージョン:
1.4

isSiteLocalAddress

public boolean isSiteLocalAddress()
InetAddress がサイトローカルアドレスかどうかを調べるユーティリティールーチンです。

オーバーライド:
クラス InetAddress 内の isSiteLocalAddress
戻り値:
InetAddress がサイトローカルアドレスかどうかを示す boolean。アドレスがサイトローカルユニキャストアドレスでない場合は false
導入されたバージョン:
1.4

isMCGlobal

public boolean isMCGlobal()
マルチキャストアドレスにグローバルスコープがあるかどうかを調べるユーティリティールーチンです。

オーバーライド:
クラス InetAddress 内の isMCGlobal
戻り値:
アドレスがグローバルスコープのマルチキャストアドレスかどうかを示す boolean。それがグローバルスコープのアドレスでないかマルチキャストアドレスでない場合は false
導入されたバージョン:
1.4

isMCNodeLocal

public boolean isMCNodeLocal()
マルチキャストアドレスにノードスコープがあるかどうかを調べるユーティリティールーチンです。

オーバーライド:
クラス InetAddress 内の isMCNodeLocal
戻り値:
アドレスがノードローカルスコープのマルチキャストアドレスかどうかを示す boolean。それがノードローカルスコープのアドレスでないかマルチキャストアドレスでない場合は false
導入されたバージョン:
1.4

isMCLinkLocal

public boolean isMCLinkLocal()
マルチキャストアドレスにリンクスコープがあるかどうかを調べるユーティリティールーチンです。

オーバーライド:
クラス InetAddress 内の isMCLinkLocal
戻り値:
アドレスがリンクローカルスコープのマルチキャストアドレスかどうかを示す boolean。それがリンクローカルスコープのアドレスでないかマルチキャストアドレスでない場合は false
導入されたバージョン:
1.4

isMCSiteLocal

public boolean isMCSiteLocal()
マルチキャストアドレスにサイトスコープがあるかどうかを調べるユーティリティールーチンです。

オーバーライド:
クラス InetAddress 内の isMCSiteLocal
戻り値:
アドレスがサイトローカルスコープのマルチキャストアドレスかどうかを示す boolean。それがサイトローカルスコープのアドレスでないかマルチキャストアドレスでない場合は false
導入されたバージョン:
1.4

isMCOrgLocal

public boolean isMCOrgLocal()
マルチキャストアドレスに組織スコープがあるかどうかを調べるユーティリティールーチンです。

オーバーライド:
クラス InetAddress 内の isMCOrgLocal
戻り値:
アドレスが組織ローカルスコープのマルチキャストアドレスかどうかを示す boolean。それが組織ローカルスコープのアドレスでないかマルチキャストアドレスでない場合は false
導入されたバージョン:
1.4

getAddress

public byte[] getAddress()
この InetAddress オブジェクトの生の IP アドレスを返します。その結果はネットワークバイト順序になります。アドレスの最上位順序バイトは getAddress()[0] 内に存在します。

オーバーライド:
クラス InetAddress 内の getAddress
戻り値:
このオブジェクトの IP アドレス

getScopeId

public int getScopeId()
このインスタンスがインタフェースに関連付けられている場合は、数値スコープ ID を返します。スコープ ID が設定されていない場合、戻り値はゼロになります。

戻り値:
スコープ ID。設定されていない場合はゼロ
導入されたバージョン:
1.5

getScopedInterface

public NetworkInterface getScopedInterface()
このインスタンスがスコープインタフェースを使って作成された場合、そのスコープインタフェースを返します。

戻り値:
スコープインタフェース。設定されていない場合は null
導入されたバージョン:
1.5

getHostAddress

public String getHostAddress()
テキスト表現の IP アドレス文字列を返します。スコープ識別子を指定してインスタンスが作成された場合、そのスコープ ID が IP アドレスの末尾に追加されます。その際、スコープ ID の先頭に「%」(パーセント) 文字が付けられます。これは数値と文字列のいずれかになりますが、どちらになるかは、インスタンスの作成時にどちらが使用されたかによって決まります。

オーバーライド:
クラス InetAddress 内の getHostAddress
戻り値:
IP アドレスの文字列形式

hashCode

public int hashCode()
この IP アドレスのハッシュコードを返します。

オーバーライド:
クラス InetAddress 内の hashCode
戻り値:
この IP アドレスのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
オブジェクトと指定されたオブジェクトを比較します。引数が null ではなく、その引数がこのオブジェクトと同じ IP アドレスを表す場合にだけ、結果が true になります。  

getAddress によって返されるバイト配列の長さが同じであり、バイト配列の各要素が同じである場合、2 つの InetAddress のインスタンスは同じ IP アドレスを表しています。

オーバーライド:
クラス InetAddress 内の equals
パラメータ:
obj - 比較対象のオブジェクト
戻り値:
オブジェクトが等しい場合は true、 そうでない場合は false
関連項目:
InetAddress.getAddress()

isIPv4CompatibleAddress

public boolean isIPv4CompatibleAddress()
InetAddress が IPv4 互換の IPv6 アドレスかどうかを調べるユーティリティールーチンです。

戻り値:
InetAddress が IPv4 互換 IPv6 アドレスかどうかを示す boolean。アドレスが IPv4 アドレスである場合は false
導入されたバージョン:
1.4

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。