クラスInet4Address

java.lang.Object
java.net.InetAddress
java.net.Inet4Address
すべての実装されたインタフェース:
Serializable

public final class Inet4Address extends InetAddress
このクラスは、インターネット・プロトコル・バージョン4 (IPv4)アドレスを表します。 RFC 790: Assigned NumbersRFC 1918: Address Allocation for Private Internets、およびRFC 2365: Administratively Scoped IP Multicastで規定されています。

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

メソッドの入力として使用されるIPv4アドレスのテキスト表現は、次のいずれかの形式になります。
  • d.d.d.d
  • d.d.d
  • d.d
  • d

4つの部分が指定されると、各部分がデータのバイトとして解釈され、左から右へ、IPv4アドレスの4つのバイトに割り当てられます。

3つの部分から成るアドレスが指定された場合、その最後の部分が16ビット・データとして解釈され、ネットワーク・アドレスの右側の2バイトに配置されます。 これにより、クラスBのネットワーク・アドレスを128.net.hostとして指定する際に、3つのパート・アドレス形式が便利になります。

2つの部分から成るアドレスが指定された場合、その最後の部分が24ビット・データとして解釈され、ネットワーク・アドレスの右側の3バイトに配置されます。 このため、2つの部分から成るアドレスの形式は、Class Aのネットワーク・アドレスをnet.hostとして指定する際に役立ちます。

1つの部分だけが指定されると、その値は直接ネットワーク・アドレスに格納され、バイトの再配置は行われません。

たとえば、次の(小数)フォームは、IPv4アドレスのテキスト表現を解析できるメソッドofLiteral(String)およびInetAddress.getByName(String)でサポートされています:

 // Dotted-decimal 'd.d.d.d' form with four part address literal
 InetAddress.getByName("007.008.009.010"); // ==> /7.8.9.10
 InetAddress.getByName("127.0.1.1");       // ==> /127.0.1.1

 // Dotted-decimal 'd.d.d' form with three part address literal,
 // the last part is placed in the right most two bytes
 // of the constructed address
 InetAddress.getByName("127.0.257"); // ==> /127.0.1.1

 // Dotted-decimal 'd.d' form with two part address literal,
 // the last part is placed in the right most three bytes
 // of the constructed address
 Inet4Address.ofLiteral("127.257"); // ==> /127.0.1.1

 // 'd' form with one decimal value that is stored directly in
 // the constructed address bytes without any rearrangement
 Inet4Address.ofLiteral("02130706689"); // ==> /127.0.1.1

前述の形式は、"strict" 10進数のみの構文に準拠しています。 また、ofPosixLiteral(String)メソッドは、POSIX inet_addr互換の"逃す"解析アルゴリズムを実装し、8進および16進のアドレス・セグメントを可能にします。 RFC 6943: セキュリティ目的での識別子比較の問題を参照してください。 Inet4Address.ofPosixLiteral(String)以外のすべてのメソッドでは、厳密な10進解析のみがサポートされます。

テキスト表現を出力値として返すメソッドでは、最初の形式、つまり厳密な10進表記のドット付き4桁の文字列が使用されます。

マルチキャスト・アドレスのスコープ

歴史的に、IPヘッダーのIPv4 TTLフィールドはマルチキャスト・スコープ・フィールドとして2倍になりました。0のTTLはノード・ローカル、1はリンク・ローカル、32まではサイト・ローカル、64までは地域ローカル、128までは大陸ローカル、255まではグローバルを意味します。 ただし、管理スコープが優先されます。 RFC 2365: Administratively Scoped IP Multicast」を参照してください。
導入されたバージョン:
1.4
外部仕様
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    boolean
    このオブジェクトと指定されたオブジェクトを比較します。
    byte[]
    このInetAddressオブジェクトの生のIPアドレスを返します。
    テキスト表現形式のIPアドレス文字列を返します。
    int
    このIPアドレスのハッシュ・コードを返します。
    boolean
    InetAddressがワイルドカード・アドレスかどうかをチェックするユーティリティ・ルーチン。
    boolean
    InetAddressがリンク・ローカル・アドレスかどうかをチェックするユーティリティ・ルーチン。
    boolean
    InetAddressがループバック・アドレスかどうかを調べるユーティリティ・ルーチンです。
    boolean
    マルチキャスト・アドレスにグローバル・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
    boolean
    マルチキャスト・アドレスにリンク・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
    boolean
    マルチキャスト・アドレスにノード・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
    boolean
    マルチキャスト・アドレスに組織スコープがあるかどうかを調べるユーティリティ・ルーチンです。
    boolean
    マルチキャスト・アドレスにサイト・スコープがあるかどうかを調べるユーティリティ・ルーチンです。
    boolean
    InetAddressがIPマルチキャスト・アドレスかどうかを調べるユーティリティ・ルーチンです。
    boolean
    InetAddressがサイト・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。
    ofLiteral(String ipv4AddressLiteral)
    IPv4アドレスの指定された「テキスト表現」に基づいてInet4Addressを作成します。
    ofPosixLiteral(String posixIPAddressLiteral)
    指定された「POSIX inet_addr互換形式でのIPv4アドレスのテキスト表現」に基づいてInet4Addressを作成します。

    クラスで宣言されたメソッド InetAddress

    getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, getLoopbackAddress, isReachable, isReachable, toString
    修飾子と型
    メソッド
    説明
    static InetAddress[]
    ホストの名前を指定すると、システム全体の「リゾルバ」に基づいて、そのIPアドレスの配列を返します。
    getByAddress(byte[] addr)
    指定された生のIPアドレスを表すInetAddressオブジェクトを返します。
    getByAddress(String host, byte[] addr)
    指定されたホスト名とIPアドレスに基づいてInetAddressを作成します。
    指定されたホスト名を持つホストのIPアドレスを取得します。
    システム全体の「リゾルバ」を使用して、この「IPアドレス」の完全修飾ドメイン名を取得します。
    このIPアドレスに対応するホスト名を取得します。
    ローカル・ホストのアドレスを返します。
    ループバック・アドレスを返します。
    boolean
    isReachable(int timeout)
    そのアドレスに到達可能かどうかをテストします。
    boolean
    isReachable(NetworkInterface netif, int ttl, int timeout)
    そのアドレスに到達可能かどうかをテストします。
    このIPアドレスをStringに変換します。

    クラスオブジェクトで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • メソッドの詳細

    • ofLiteral

      public static Inet4Address ofLiteral(String ipv4AddressLiteral)
      IPv4アドレスの指定された「テキスト表現」に基づいてInet4Addressを作成します。

      指定されたIPv4アドレス・リテラルが「有効なIPv4アドレス」を表すことができない場合は、IllegalArgumentExceptionがスローされます。

      このメソッドはブロックされません。つまり、逆ルックアップは実行されません。

      パラメータ:
      ipv4AddressLiteral - IPv4アドレスのテキスト表現。
      戻り値:
      ホスト名が設定されていないInet4Addressオブジェクトで、指定されたIPv4アドレス・リテラルから構築されます。
      スロー:
      IllegalArgumentException - ipv4AddressLiteralをIPv4アドレス・リテラルとして解析できない場合。
      NullPointerException - ipv4AddressLiteralnullの場合。
      導入されたバージョン:
      22
    • ofPosixLiteral

      public static Inet4Address ofPosixLiteral(String posixIPAddressLiteral)
      指定された「POSIX inet_addr互換形式でのIPv4アドレスのテキスト表現」に基づいてInet4Addressを作成します。

      メソッドofPosixLiteralは、POSIX inet_addr互換の解析アルゴリズムを実装し、8進数および16進数のアドレス・セグメントを許可します。"0"は8進数のプレフィクス、"0x"および"0X"は16進数のプレフィクスです。 0以外から始まる0以外のアドレス・セグメントは、10進数として解析されます。 このメソッドでは、次の(non-decimal)フォームがサポートされています:

       // Dotted-quad 'x.x.x.x' form with four part address literal
       Inet4Address.ofPosixLiteral("0177.0.0.1"); // ==> /127.0.0.1
       Inet4Address.ofPosixLiteral("0x7F.0.0.1"); // ==> /127.0.0.1
      
       // Dotted-triple 'x.x.x' form with three part address literal,
       // the last part is placed in the rightmost two bytes
       // of the constructed address
       Inet4Address.ofPosixLiteral("0177.0.0402"); // ==> /127.0.1.2
       Inet4Address.ofPosixLiteral("0x7F.0.0x102"); // ==> /127.0.1.2
      
       // Dotted-double 'x.x' form with two part address literal,
       // the last part is placed in the rightmost three bytes
       // of the constructed address
       Inet4Address.ofPosixLiteral("0177.0201003"); // ==> /127.1.2.3
       Inet4Address.ofPosixLiteral("0x7F.0x10203"); // ==> /127.1.2.3
       Inet4Address.ofPosixLiteral("127.66051"); // ==> /127.1.2.3
      
       // Dotless 'x' form with one value that is stored directly in
       // the constructed address bytes without any rearrangement
       Inet4Address.ofPosixLiteral("0100401404"); // ==> /1.2.3.4
       Inet4Address.ofPosixLiteral("0x1020304"); // ==> /1.2.3.4
       Inet4Address.ofPosixLiteral("16909060"); // ==> /1.2.3.4
      

      指定されたIPv4アドレス・リテラルが「POSIXフォーム」の有効なIPv4アドレスを表すことができない場合、IllegalArgumentExceptionがスローされます。

      このメソッドはブロックしません。つまり、ホスト名ルックアップは実行されません。

      APIのノート:
      このメソッドは、posixIPAddressLiteralパラメータに先頭にゼロが付いたアドレス・セグメントが含まれている場合、ofLiteral(String)と比較して異なる結果を生成します。 先頭にゼロのアドレス・セグメントは、常にこのメソッドによって8進数として解析されるため、0255 (八進数)は173 (小数)として解析されます。 一方、Inet4Address.ofLiteralは先頭のゼロを無視し、すべての数値を10進数として解析して255を生成します。 このメソッドが0256.0256.0256.0256 (八進数)を解析し、4つのドット付きクワッド表記で174.174.174.174 (小数)を生成する場合、Inet4Address.ofLiteralIllegalArgumentExceptionをスローします。
      パラメータ:
      posixIPAddressLiteral - IPv4アドレスのテキスト表現。
      戻り値:
      ホスト名が設定されていないInet4Addressオブジェクトで、指定されたIPv4アドレス・リテラルから構築されます。
      スロー:
      IllegalArgumentException - posixIPAddressLiteralをIPv4アドレス・リテラルとして解析できない場合。
      NullPointerException - posixIPAddressLiteralnullの場合。
      導入されたバージョン:
      23
    • isMulticastAddress

      public boolean isMulticastAddress()
      InetAddressがIPマルチキャスト・アドレスかどうかを調べるユーティリティ・ルーチンです。 IPマルチキャスト・アドレスはClass Dアドレスです。つまり、そのアドレスの先頭の4ビットが1110です。
      オーバーライド:
      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アドレス。
    • getHostAddress

      public String getHostAddress()
      テキスト表現形式のIPアドレス文字列を返します。
      オーバーライド:
      getHostAddress、クラスInetAddress
      戻り値:
      IPアドレスの文字列形式。
    • hashCode

      public int hashCode()
      このIPアドレスのハッシュ・コードを返します。
      オーバーライド:
      hashCode、クラスInetAddress
      戻り値:
      このIPアドレスのハッシュ・コード値。
      関連項目:
    • equals

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

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

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