クラス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を作成します。

    クラスjava.lang.Objectで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • メソッドの詳細

    • 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(java.lang.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
      関連項目: