クラスInet4Address
- すべての実装されたインタフェース:
Serializable
IPv4アドレスのテキスト表現
メソッドの入力として使用されるIPv4アドレスのテキスト表現は、次のいずれかの形式になります。
d.d.d.dd.d.dd.dd
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アドレス文字列を返します。inthashCode()このIPアドレスのハッシュ・コードを返します。booleanInetAddressがワイルドカード・アドレスかどうかをチェックするユーティリティ・ルーチン。booleanInetAddressがリンク・ローカル・アドレスかどうかをチェックするユーティリティ・ルーチン。booleanInetAddressがループバック・アドレスかどうかを調べるユーティリティ・ルーチンです。booleanマルチキャスト・アドレスにグローバル・スコープがあるかどうかを調べるユーティリティ・ルーチンです。booleanマルチキャスト・アドレスにリンク・スコープがあるかどうかを調べるユーティリティ・ルーチンです。booleanマルチキャスト・アドレスにノード・スコープがあるかどうかを調べるユーティリティ・ルーチンです。booleanマルチキャスト・アドレスに組織スコープがあるかどうかを調べるユーティリティ・ルーチンです。booleanマルチキャスト・アドレスにサイト・スコープがあるかどうかを調べるユーティリティ・ルーチンです。booleanInetAddressがIPマルチキャスト・アドレスかどうかを調べるユーティリティ・ルーチンです。booleanInetAddressがサイト・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。static Inet4AddressIPv4アドレスの指定された「テキスト表現」に基づいてInet4Addressを作成します。static Inet4AddressofPosixLiteral(String posixIPAddressLiteral) 指定された「POSIXinet_addr互換形式でのIPv4アドレスのテキスト表現」に基づいてInet4Addressを作成します。クラスjava.net.InetAddressで宣言されたメソッド
getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, getLoopbackAddress, isReachable, isReachable, toString
-
メソッドの詳細
-
ofLiteral
public static Inet4Address ofLiteral(String ipv4AddressLiteral) IPv4アドレスの指定された「テキスト表現」に基づいてInet4Addressを作成します。指定されたIPv4アドレス・リテラルが「有効なIPv4アドレス」を表すことができない場合は、
IllegalArgumentExceptionがスローされます。このメソッドはブロックされません。つまり、逆ルックアップは実行されません。
- パラメータ:
ipv4AddressLiteral- IPv4アドレスのテキスト表現。- 戻り値:
- ホスト名が設定されていない
Inet4Addressオブジェクトで、指定されたIPv4アドレス・リテラルから構築されます。 - スロー:
IllegalArgumentException-ipv4AddressLiteralをIPv4アドレス・リテラルとして解析できない場合。NullPointerException-ipv4AddressLiteralがnullの場合。- 導入されたバージョン:
- 22
-
ofPosixLiteral
public static Inet4Address ofPosixLiteral(String posixIPAddressLiteral) 指定された「POSIXinet_addr互換形式でのIPv4アドレスのテキスト表現」に基づいてInet4Addressを作成します。メソッド
ofPosixLiteralは、POSIXinet_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.ofLiteralはIllegalArgumentExceptionをスローします。- パラメータ:
posixIPAddressLiteral- IPv4アドレスのテキスト表現。- 戻り値:
- ホスト名が設定されていない
Inet4Addressオブジェクトで、指定されたIPv4アドレス・リテラルから構築されます。 - スロー:
IllegalArgumentException-posixIPAddressLiteralをIPv4アドレス・リテラルとして解析できない場合。NullPointerException-posixIPAddressLiteralがnullの場合。- 導入されたバージョン:
- 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。 - 関連項目:
-