モジュール java.base
パッケージ 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マップ・アドレスの説明
    IPv4マップのアドレス ::ffff:w.x.y.zの形式のうち、このIPv6アドレスはIPv4アドレスを表すために使用されます。 このアドレスを利用すると、ネイティブ・プログラムでは、IPv4ノードとIPv6ノードの両方と通信する際に、同じアドレス・データ構造と、さらには同じソケットを使用できます。

    InetAddressとInet6Addressでは、これは内部の表現に使用され、機能上の役割はありません。 JavaからIPv4マップ・アドレスが返されることはありません。 これらのクラスは、バイト配列とテキスト表現の両方で、IPv4マップ・アドレスを入力として取ることができます。 ただし、そのアドレスはIPv4アドレスに変換されます。

    Textual representation of IPv6 scoped addresses

    前述した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を作成します。ただし、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マルチキャスト・アドレスかどうかを調べるユーティリティ・ルーチンです。アドレスの先頭が11111111になっていれば、そのアドレスはマルチキャスト・アドレスです。
      boolean isSiteLocalAddress()
      InetAddressがサイト・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。
    • メソッドの詳細

      • 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になっていれば、そのアドレスはマルチキャスト・アドレスです。
        オーバーライド:
        isMulticastAddress、クラス: InetAddress
        戻り値:
        InetAddressがIPマルチキャスト・アドレスかどうかを示すboolean
      • isAnyLocalAddress

        public boolean isAnyLocalAddress()
        InetAddressがワイルドカード・アドレスかどうかを調べるユーティリティ・ルーチン。
        オーバーライド:
        isAnyLocalAddress、クラス: InetAddress
        戻り値:
        InetAddressがワイルドカード・アドレスかどうかを示すboolean
      • isLoopbackAddress

        public boolean isLoopbackAddress()
        InetAddressがループバック・アドレスかどうかを調べるユーティリティ・ルーチンです。
        オーバーライド:
        isLoopbackAddress、クラス: InetAddress
        戻り値:
        InetAddressがループバック・アドレスかどうかを示すboolean。ループバック・アドレスでない場合はfalse。
      • isLinkLocalAddress

        public boolean isLinkLocalAddress()
        InetAddressがリンク・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。
        オーバーライド:
        isLinkLocalAddress、クラス: InetAddress
        戻り値:
        InetAddressがリンク・ローカル・アドレスかどうかを示すboolean。アドレスがリンク・ローカル・ユニキャスト・アドレスでない場合はfalse。
      • isSiteLocalAddress

        public boolean isSiteLocalAddress()
        InetAddressがサイト・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。
        オーバーライド:
        isSiteLocalAddress、クラス: InetAddress
        戻り値:
        InetAddressがサイト・ローカル・アドレスかどうかを示すboolean。アドレスがサイト・ローカル・ユニキャスト・アドレスでない場合はfalse。
      • isMCGlobal

        public boolean isMCGlobal()
        マルチキャスト・アドレスにグローバル・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
        オーバーライド:
        isMCGlobal、クラス: InetAddress
        戻り値:
        アドレスがグローバル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それがグローバル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
      • isMCNodeLocal

        public boolean isMCNodeLocal()
        マルチキャスト・アドレスにノード・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
        オーバーライド:
        isMCNodeLocal、クラス: InetAddress
        戻り値:
        アドレスがノード・ローカル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それがノード・ローカル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
      • isMCLinkLocal

        public boolean isMCLinkLocal()
        マルチキャスト・アドレスにリンク・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
        オーバーライド:
        isMCLinkLocal、クラス: InetAddress
        戻り値:
        アドレスがリンク・ローカル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それがリンク・ローカル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
      • isMCSiteLocal

        public boolean isMCSiteLocal()
        マルチキャスト・アドレスにサイト・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
        オーバーライド:
        isMCSiteLocal、クラス: InetAddress
        戻り値:
        アドレスがサイト・ローカル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それがサイト・ローカル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
      • isMCOrgLocal

        public boolean isMCOrgLocal()
        マルチキャスト・アドレスに組織スコープがあるかどうかを調べるユーティリティ・ルーチンです。
        オーバーライド:
        isMCOrgLocal、クラス: InetAddress
        戻り値:
        アドレスが組織ローカル・スコープのマルチキャスト・アドレスかどうかを示すboolean。それが組織ローカル・スコープのアドレスでないかマルチキャスト・アドレスでない場合はfalse
      • getAddress

        public byte[] getAddress()
        このInetAddressオブジェクトの生のIPアドレスを返します。 その結果はネットワーク・バイト順序になります。アドレスの最上位順序バイトはgetAddress()[0].内に存在します。
        オーバーライド:
        getAddress、クラス: InetAddress
        戻り値:
        このオブジェクトの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の先頭に「%」(パーセント)文字が付けられます。 これは数値と文字列のいずれかになりますが、どちらになるかは、インスタンスの作成時にどちらが使用されたかによって決まります。
        オーバーライド:
        getHostAddress、クラス: InetAddress
        戻り値:
        IPアドレスの文字列形式。
      • equals

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

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

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

        public boolean isIPv4CompatibleAddress()
        InetAddressがIPv4互換のIPv6アドレスかどうかを調べるユーティリティ・ルーチンです。
        戻り値:
        InetAddressがIPv4互換IPv6アドレスかどうかを示すboolean。アドレスがIPv4アドレスである場合はfalse。