public class InetAddress extends Object implements Serializable
IP アドレスは、IP によって使用される 32 ビットまたは 128 ビットの符号なしの数値です。IP は、UDP や TCP などのプロトコルの構築基盤となる下位レベルのプロトコルです。IP アドレスのアーキテクチャーについては、「RFC 790: Assigned Numbers」、「RFC 1918: Address Allocation for Private Internets」、「RFC 2365: Administratively Scoped IP Multicast」、および「RFC 2373: IP Version 6 Addressing Architecture」で定義されています。InetAddress のインスタンスは、IP アドレスと、場合によってはそれに対応するホスト名から構成されます。ホスト名が含まれるかどうかは、そのインスタンスがホスト名を使って構築されているかどうか、またはそのインスタンスがホスト名の逆解決をすでに実行したかどうかによって決まります。
ユニキャスト 単一インタフェースの識別子。ユニキャストアドレスに送信されたパケットは、そのアドレスによって識別されるインタフェースに配信されます。 未指定のアドレス -- 任意ローカルアドレスまたはワイルドカードアドレスとも呼ばれます。これはどのノードにも割り当てないでください。これはアドレスがないことを示します。このアドレスを使った例としてバインドの対象があります。これを使うと、あるサーバーホストに複数のインタフェースがある場合に、そのサーバーが任意のインタフェース上でクライアントの接続を受け入れることができます。
未指定のアドレスは、IP パケットの転送先アドレスとして使用してはいけません。
ループバックアドレス -- これはループバックインタフェースに割り当てられるアドレスです。この IP アドレスに送信された内容はすべてループして元に戻され、ローカルホストの IP 入力となります。このアドレスは、クライアントのテスト時によく使用されます。
マルチキャスト 一連のインタフェース (通常は別のノードに属している) の識別子。マルチキャストアドレスに送信されたパケットは、そのアドレスによって識別されるすべてのインタフェースに配信されます。
リンクローカルアドレスは、自動アドレス構成、隣接アドレスの発見などを目的として、あるいはルーターが存在しない場合に、単一リンクのアドレス指定に使うために設計されています。
サイトローカルアドレスは、グローバル接頭辞を必要としないサイト内のアドレス指定に使うために設計されています。
グローバルアドレスは、インターネット全体で一意です。
IPv4 のアドレス形式については、Inet4Addressを参照してください。IPv6 のアドレス形式については、Inet6Addressを参照してください。
IPv4 と IPv6 のアドレスがどのように使用されるかに影響を与えるいくつかのシステムプロパティーが存在します。
逆名前解決では、任意の IP アドレスについて、その IP アドレスに関連するホスト名が返されます。
InetAddress クラスは、ホスト名からその IP アドレスへの解決、およびその逆の解決のメソッドを提供します。
デフォルトでは、セキュリティーマネージャーがインストールされている場合は、DNS なりすまし攻撃から身を守るため、成功したホスト名解決の結果が永続的にキャッシュされます。セキュリティーマネージャーがインストールされていない場合のデフォルト動作では、ある限られた期間 (実装に依存する) だけエントリがキャッシュされます。失敗したホスト名解決の結果は、パフォーマンスの向上のために短時間 (10 秒) だけキャッシュされます。
デフォルト動作が要求に合わない場合は、ポジティブキャッシュ用の Java セキュリティープロパティーを異なる有効期間 (TTL) 値に設定することができます。同様に、システム管理者は、異なるネガティブキャッシュ TTL 値を必要に応じて設定することができます。
2 つの Java セキュリティープロパティーにより、ポジティブおよびネガティブのホスト名解決のキャッシュに使用する TTL 値を制御します。
- networkaddress.cache.ttl
- ネームサービスによる成功した名前検索に対するキャッシングポリシーを示します。指定する値は、成功した検索結果をキャッシュする秒数を示す整数です。デフォルト設定は、実装に固有の期間キャッシュすることです。
-1 の値は、「ずっとキャッシュする」という意味です。
- networkaddress.cache.negative.ttl (デフォルト: 10)
- ネームサービスによる失敗した名前検索に対するキャッシングポリシーを示します。指定する値は、失敗した検索結果をキャッシュする秒数を示す整数です。
0 の値は、「キャッシュしない」という意味です。-1 の値は、「ずっとキャッシュする」という意味です。
修飾子と型 | メソッドと説明 |
---|---|
boolean |
equals(Object obj)
このオブジェクトと指定されたオブジェクトを比較します。
|
byte[] |
getAddress()
この
InetAddress オブジェクトの生の IP アドレスを返します。 |
static InetAddress[] |
getAllByName(String host)
ホスト名を指定すると、システムに設定されているネームサービスに基づいてその IP アドレスの配列を返します。
|
static InetAddress |
getByAddress(byte[] addr)
指定された生の IP アドレスを表す
InetAddress オブジェクトを返します。 |
static InetAddress |
getByAddress(String host, byte[] addr)
指定されたホスト名と IP アドレスに基づいて InetAddress を作成します。
|
static InetAddress |
getByName(String host)
指定されたホスト名を持つホストの IP アドレスを取得します。
|
String |
getCanonicalHostName()
この IP アドレスに対応する完全指定ドメイン名を取得します。
|
String |
getHostAddress()
テキスト表現の IP アドレス文字列を返します。
|
String |
getHostName()
この IP アドレスに対応するホスト名を取得します。
|
static InetAddress |
getLocalHost()
ローカルホストのアドレスを返します。
|
static InetAddress |
getLoopbackAddress()
ループバックアドレスを返します。
|
int |
hashCode()
この IP アドレスのハッシュコードを返します。
|
boolean |
isAnyLocalAddress()
InetAddress がワイルドカードアドレスかどうかを調べるユーティリティールーチンです。
|
boolean |
isLinkLocalAddress()
InetAddress がリンクローカルアドレスかどうかを調べるユーティリティールーチンです。
|
boolean |
isLoopbackAddress()
InetAddress がループバックアドレスかどうかを調べるユーティリティールーチンです。
|
boolean |
isMCGlobal()
マルチキャストアドレスにグローバルスコープがあるかどうかを調べるユーティリティールーチンです。
|
boolean |
isMCLinkLocal()
マルチキャストアドレスにリンクスコープがあるかどうかを調べるユーティリティールーチンです。
|
boolean |
isMCNodeLocal()
マルチキャストアドレスにノードスコープがあるかどうかを調べるユーティリティールーチンです。
|
boolean |
isMCOrgLocal()
マルチキャストアドレスに組織スコープがあるかどうかを調べるユーティリティールーチンです。
|
boolean |
isMCSiteLocal()
マルチキャストアドレスにサイトスコープがあるかどうかを調べるユーティリティールーチンです。
|
boolean |
isMulticastAddress()
InetAddress が IP マルチキャストアドレスかどうかを調べるユーティリティールーチンです。
|
boolean |
isReachable(int timeout)
そのアドレスに到達可能かどうかをテストします。
|
boolean |
isReachable(NetworkInterface netif, int ttl, int timeout)
そのアドレスに到達可能かどうかをテストします。
|
boolean |
isSiteLocalAddress()
InetAddress がサイトローカルアドレスかどうかを調べるユーティリティールーチンです。
|
String |
toString()
この IP アドレスを
String に変換します。 |
public boolean isMulticastAddress()
boolean
public boolean isAnyLocalAddress()
boolean
。public boolean isLoopbackAddress()
boolean
。ループバックアドレスでない場合は false。public boolean isLinkLocalAddress()
boolean
。アドレスがリンクローカルユニキャストアドレスでない場合は false。public boolean isSiteLocalAddress()
boolean
。アドレスがサイトローカルユニキャストアドレスでない場合は false。public boolean isMCGlobal()
boolean
。それがグローバルスコープのアドレスでないかマルチキャストアドレスでない場合は falsepublic boolean isMCNodeLocal()
boolean
。それがノードローカルスコープのアドレスでないかマルチキャストアドレスでない場合は falsepublic boolean isMCLinkLocal()
boolean
。それがリンクローカルスコープのアドレスでないかマルチキャストアドレスでない場合は falsepublic boolean isMCSiteLocal()
boolean
。それがサイトローカルスコープのアドレスでないかマルチキャストアドレスでない場合は falsepublic boolean isMCOrgLocal()
boolean
。それが組織ローカルスコープのアドレスでないかマルチキャストアドレスでない場合は falsepublic boolean isReachable(int timeout) throws IOException
タイムアウト値 (ミリ秒) は、この試行の最大所要時間を示します。応答が得られる前に操作がタイムアウトした場合、そのホストは到達不可能とみなされます。値が負の場合、IllegalArgumentException がスローされます。
timeout
- 呼び出しが中止されるまでのミリ秒単位の時間boolean
。IOException
- ネットワークエラーが発生した場合IllegalArgumentException
- timeout
が負の値の場合。public boolean isReachable(NetworkInterface netif, int ttl, int timeout) throws IOException
ネットワークインタフェース
パラメータと ttl
パラメータを使えば、呼び出し元は、テストの実行経路となるネットワークインタフェースと、パケットの最大ホップ数を指定できます。ttl
の値が負の場合、IllegalArgumentException がスローされます。
タイムアウト値 (ミリ秒) は、この試行の最大所要時間を示します。応答が得られる前に操作がタイムアウトした場合、そのホストは到達不可能とみなされます。値が負の場合、IllegalArgumentException がスローされます。
netif
− テストの実行経路となる NetworkInterface。どのインタフェースでもかまわない場合は nullttl
− 試みるべきホップの最大数。デフォルトは 0timeout
- 呼び出しが中止されるまでのミリ秒単位の時間boolean
。IllegalArgumentException
- timeout
または ttl
が負の場合。IOException
- ネットワークエラーが発生した場合public String getHostName()
この InetAddress がホスト名を指定して作成されたものである場合は、記憶されているそのホスト名が返されます。そうでない場合は、システムで設定された名前検索サービスに基づいて逆名前検索が実行され、その結果が返されます。ネームサービスの検索が必要になった場合は、getCanonicalHostName
を呼び出します。
セキュリティーマネージャーが存在する場合は、まずセキュリティーマネージャーの checkConnect
メソッドがホスト名および -1
を引数として呼び出され、操作が許可されるかどうかが確認されます。操作が許可されていない場合、IP アドレスのテキスト表現を返します。
getCanonicalHostName()
, SecurityManager.checkConnect(java.lang.String, int)
public String getCanonicalHostName()
セキュリティーマネージャーが存在する場合、このメソッドはまず、ホスト名と -1
を引数に指定してその checkConnect
メソッドを呼び出し、呼び出し元のコードがこの IP アドレスのホスト名を知ること (つまり、そのホストに接続すること) を許可されているかどうかを確認します。操作が許可されていない場合、IP アドレスのテキスト表現を返します。
SecurityManager.checkConnect(java.lang.String, int)
public byte[] getAddress()
InetAddress
オブジェクトの生の IP アドレスを返します。その結果はネットワークバイト順序になります。アドレスの最上位順序バイトは getAddress()[0]
.内に存在します。public String getHostAddress()
public int hashCode()
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
null
ではなく、その引数がこのオブジェクトと同じ IP アドレスを表す場合にだけ、結果が true
になります。
getAddress
によって返されるバイト配列の長さが同じであり、バイト配列の各コンポーネントが同じである場合、2 つの InetAddress
のインスタンスは同じ IP アドレスを表しています。
equals
、クラス: Object
obj
- 比較対象のオブジェクト。true
、そうでない場合は false
。getAddress()
public String toString()
String
に変換します。返される文字列の形式は、「ホスト名 / リテラル IP アドレス」になります。
ホスト名が未解決の場合、逆ネームサービス検索は実行されません。ホスト名の部分は空の文字列で表現されます。public static InetAddress getByAddress(String host, byte[] addr) throws UnknownHostException
ホスト名は、「java.sun.com
」などのマシン名か、またはその IP アドレスのテキスト表現です。
ホスト名の有効性チェックも一切実行されません。
addr に IPv4 アドレスを指定すると、Inet4Address のインスタンスが返されます。そうでない場合は、Inet6Address のインスタンスが返されます。
IPv4 アドレスのバイト配列は 4 バイト長、IPv6 のバイト配列は 16 バイト長である必要があります。
host
- 指定されたホストaddr
- ネットワークバイトオーダーの IP アドレスUnknownHostException
- IP アドレスの長さが不正の場合public static InetAddress getByName(String host) throws UnknownHostException
ホスト名は、「java.sun.com
」などのマシン名か、またはその IP アドレスのテキスト表現です。リテラル IP アドレスが指定された場合、アドレス形式の有効性のみがチェックされます。
リテラル IPv6 アドレスで指定される host
については、RFC 2732 で定義されている形式か、RFC 2373 で定義されているリテラル IPv6 アドレス形式が可能です。IPv6 スコープアドレスもサポートされています。IPv6 スコープアドレスについては、ここを参照してください。
host が null の場合、ループバックインタフェースのアドレスを表す InetAddress が返されます。RFC 3330 セクション 2 および RFC 2373 セクション 2.5.3 を参照してください。
host
- 指定されたホストまたは null
。UnknownHostException
- host
の IP アドレスが見つからなかった場合、またはグローバル IPv6 アドレスでスコープ ID が指定された場合。SecurityException
- セキュリティーマネージャーが存在し、その checkConnect メソッドでこの操作が許可されていない場合。public static InetAddress[] getAllByName(String host) throws UnknownHostException
ホスト名は、「java.sun.com
」などのマシン名か、またはその IP アドレスのテキスト表現です。リテラル IP アドレスが指定された場合、アドレス形式の有効性のみがチェックされます。
リテラル IPv6 アドレスで指定される host
については、RFC 2732 で定義されている形式か、RFC 2373 で定義されているリテラル IPv6 アドレス形式が可能です。リテラル IPv6 アドレスは修飾することも可能です。それにはスコープゾーン識別子、つまり スコープ ID を末尾に追加します。スコープ ID の構文や使用方法については、ここを参照してください。
host が null の場合、ループバックインタフェースのアドレスを表す InetAddress が返されます。RFC 3330 セクション 2 および RFC 2373 セクション 2.5.3 を参照してください。
セキュリティーマネージャーが存在する場合、host
が null ではなく、host.length()
の値がゼロではないときは、セキュリティーマネージャーの checkConnect
メソッドが、引数としてホスト名と -1
を指定して呼び出され、この操作が許可されているかどうかを確認します。
host
- ホスト名または null
。UnknownHostException
- host
の IP アドレスが見つからなかった場合、またはグローバル IPv6 アドレスでスコープ ID が指定された場合。SecurityException
- セキュリティーマネージャーが存在し、その checkConnect
メソッドでこの操作が許可されていない場合。SecurityManager.checkConnect(java.lang.String, int)
public static InetAddress getLoopbackAddress()
返される InetAddress は、IPv4 ループバックアドレスの 127.0.0.1 または IPv6 ループバックアドレスの ::1 を表します。返される IPv4 ループバックアドレスは、127.*.*.* という形式の多くのアドレスのうちの 1 つだけです。
public static InetAddress getByAddress(byte[] addr) throws UnknownHostException
InetAddress
オブジェクトを返します。引数はネットワークバイト順序になります。アドレスの最上位順序バイトは getAddress()[0]
.内に存在します。
このメソッドはブロックしません。つまり、逆ネームサービス検索は実行されません。
IPv4 アドレスのバイト配列は 4 バイト長、IPv6 のバイト配列は 16 バイト長である必要があります。
addr
- ネットワークバイトオーダーの IP アドレスUnknownHostException
- IP アドレスの長さが不正の場合public static InetAddress getLocalHost() throws UnknownHostException
InetAddress
に解決することによって実現されます。
注:解決されたアドレスは、短時間キャッシュされる場合があります。
セキュリティーマネージャーが存在する場合、引数としてローカルホスト名と -1
を指定してセキュリティーマネージャーの checkConnect
メソッドが呼び出され、この操作が許可されているかどうかが確認されます。この操作が許可されない場合は、ループバックアドレスを表す InetAddress が返されます。
UnknownHostException
- ローカルホスト名をアドレスに解決できなかった場合。SecurityManager.checkConnect(java.lang.String, int)
, getByName(java.lang.String)
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.