クラスInet4Address
- すべての実装されたインタフェース:
Serializable
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
hashCode()
このIPアドレスのハッシュ・コードを返します。boolean
InetAddressがワイルドカード・アドレスかどうかをチェックするユーティリティ・ルーチン。boolean
InetAddressがリンク・ローカル・アドレスかどうかをチェックするユーティリティ・ルーチン。boolean
InetAddressがループバック・アドレスかどうかを調べるユーティリティ・ルーチンです。boolean
マルチキャスト・アドレスにグローバル・スコープがあるかどうかを調べるユーティリティ・ルーチンです。boolean
マルチキャスト・アドレスにリンク・スコープがあるかどうかを調べるユーティリティ・ルーチンです。boolean
マルチキャスト・アドレスにノード・スコープがあるかどうかを調べるユーティリティ・ルーチンです。boolean
マルチキャスト・アドレスに組織スコープがあるかどうかを調べるユーティリティ・ルーチンです。boolean
マルチキャスト・アドレスにサイト・スコープがあるかどうかを調べるユーティリティ・ルーチンです。boolean
InetAddressがIPマルチキャスト・アドレスかどうかを調べるユーティリティ・ルーチンです。boolean
InetAddressがサイト・ローカル・アドレスかどうかを調べるユーティリティ・ルーチンです。static Inet4Address
IPv4アドレスの指定された「テキスト表現」に基づいてInet4Address
を作成します。static Inet4Address
ofPosixLiteral
(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
。 - 関連項目:
-