JavaTM 2 Platform
Standard Ed. 5.0

java.net
クラス InetAddress

java.lang.Object
  上位を拡張 java.net.InetAddress
すべての実装されたインタフェース:
Serializable
直系の既知のサブクラス:
Inet4Address, Inet6Address

public class InetAddress
extends Object
implements Serializable

IP (Internet Protocol) アドレスを表すクラスです。

IP アドレスは、IP で使用される 32 ビットまたは 128 ビットの符号なしの数字で、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 入力になります。このアドレスはよくクライアントのテストに使用されます。

マルチキャスト 一連のインタフェース (通常は別のノードに属す) の識別子。マルチキャストアドレスに送信されたパケットは、そのアドレスで識別されるすべてのインタフェースに配信されます。

IP アドレスのスコープ

「リンクローカル」アドレスは、自動アドレス構成、隣接アドレスの発見などを目的として、あるいはルータが存在しない場合に、単一リンクのアドレス指定に使うために設計されています。

「サイトローカル」アドレスは、グローバル接頭辞を必要としないサイト内のアドレス指定に使うために設計されています。

「グローバル」アドレスは、インターネット全体で一意です。

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

IP アドレスのテキスト表現はアドレスファミリに固有です。

IPv4 のアドレス形式については、「Inet4Address#format」を参照してください。IPv6 のアドレス形式については、「Inet4Address#format」を参照してください。

ホスト名解決

ホスト名と IP アドレスの「解決」は、ローカルマシンの構成情報とドメインネームシステム (DNS) やネットワーク情報サービス (NIS) などのネットワークネームサービスを組み合わせて使用することで実現されます。使用される個々のネームサービスは、デフォルトではローカルマシンに構成されているネームサービスです。任意のホスト名について、対応する IP アドレスが返されます。

「逆名前解決」では、任意の IP アドレスについて、その IP アドレスに関連するホスト名が返されます。

InetAddress クラスは、ホスト名からその IP アドレスへの解決、およびその逆の解決のメソッドを提供します。

InetAddress のキャッシュ

InetAddress クラスはキャッシュを持ち、成功および不成功のホスト名解決を格納します。ポジティブキャッシュは DNS の不正アクセスによる攻撃から防御するために、ネガティブキャッシュはパフォーマンスの向上のために使用されます。

デフォルトでは、キャッシュのエントリを削除する安全な時期を決定する一般的な規則がないため、成功したホスト名解決の結果は永遠にキャッシュされます。不成功のホスト名解決の結果は、パフォーマンスの向上のために短時間 (10 秒) だけキャッシュされます。

DNS の不正アクセスによる攻撃が不可能と判定できる特定の環境では、Java セキュリティプロパティをポジティブキャッシュの別の有効期間 (TTL) 値に設定することができます。同様に、システム管理者は必要に応じて別のネガティブキャッシュ TTL 値を設定することができます。

2 つの Java セキュリティプロパティにより、ポジティブおよびネガティブのホスト名解決のキャッシュに使用する TTL 値を制御します。

networkaddress.cache.ttl (デフォルト: -1)
ネームサービスで成功したネーム参照のキャッシュポリシーを示します。成功した参照をキャッシュする秒数を示す整数値を指定します。

値 -1 は、「永遠にキャッシュ」を示します。

networkaddress.cache.negative.ttl (デフォルト: 10)
ネームサービスで成功しなかったネーム参照のキャッシュポリシーを示します。成功しなかった参照をキャッシュする秒数を示す整数値を指定します。

値 0 は「キャッシュしない」を、値 -1 は「永遠にキャッシュ」を示します。

導入されたバージョン:
JDK1.0
関連項目:
getByAddress(byte[]), getByAddress(java.lang.String, byte[]), getAllByName(java.lang.String), getByName(java.lang.String), getLocalHost(), 直列化された形式

メソッドの概要
 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()
          ローカルホストを返します。
 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 に変換します。
 
クラス java.lang.Object から継承されたメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

メソッドの詳細

isMulticastAddress

public boolean isMulticastAddress()
InetAddress が IP マルチキャストアドレスかどうかを調べるユーティリティルーチンです。

戻り値:
InetAddress が IP マルチキャストアドレスかどうかを示す boolean
導入されたバージョン:
JDK1.1

isAnyLocalAddress

public boolean isAnyLocalAddress()
InetAddress がワイルドカードアドレスかどうかを調べるユーティリティルーチンです。

戻り値:
InetAddress がワイルドカードアドレスかどうかを示す boolean
導入されたバージョン:
1.4

isLoopbackAddress

public boolean isLoopbackAddress()
InetAddress がループバックアドレスかどうかを調べるユーティリティルーチンです。

戻り値:
InetAddress がループバックアドレスかどうかを示す boolean。ループバックアドレスでない場合は false
導入されたバージョン:
1.4

isLinkLocalAddress

public boolean isLinkLocalAddress()
InetAddress がリンクローカルアドレスかどうかを調べるユーティリティルーチンです。

戻り値:
InetAddress がリンクローカルアドレスかどうかを示す boolean。アドレスがリンクローカルユニキャストアドレスでない場合は false
導入されたバージョン:
1.4

isSiteLocalAddress

public boolean isSiteLocalAddress()
InetAddress がサイトローカルアドレスかどうかを調べるユーティリティルーチンです。

戻り値:
InetAddress がサイトローカルアドレスかどうかを示す boolean。アドレスがサイトローカルユニキャストアドレスでない場合は false
導入されたバージョン:
1.4

isMCGlobal

public boolean isMCGlobal()
マルチキャストアドレスにグローバルスコープがあるかどうかを調べるユーティリティルーチンです

戻り値:
アドレスがグローバルスコープのマルチキャストアドレスであるかどうかを示す boolean。アドレスがグローバルスコープでない場合、あるいはマルチキャストアドレスでない場合は false
導入されたバージョン:
1.4

isMCNodeLocal

public boolean isMCNodeLocal()
マルチキャストアドレスにノードスコープがあるかどうかを調べるユーティリティルーチンです

戻り値:
アドレスがノードローカルスコープのマルチキャストアドレスであるかどうかを示す boolean。アドレスがノードローカルスコープでない場合、あるいはマルチキャストアドレスでない場合は false
導入されたバージョン:
1.4

isMCLinkLocal

public boolean isMCLinkLocal()
マルチキャストアドレスにリンクスコープがあるかどうかを調べるユーティリティルーチンです

戻り値:
アドレスがリンクローカルスコープのマルチキャストアドレスであるかどうかを示す boolean。アドレスがリンクローカルスコープでない場合、あるいはマルチキャストアドレスでない場合は false
導入されたバージョン:
1.4

isMCSiteLocal

public boolean isMCSiteLocal()
マルチキャストアドレスにサイトスコープがあるかどうかを調べるユーティリティルーチンです

戻り値:
アドレスがサイトローカルスコープのマルチキャストアドレスであるかどうかを示す boolean。アドレスがサイトローカルスコープでない場合、あるいはマルチキャストアドレスでない場合は false
導入されたバージョン:
1.4

isMCOrgLocal

public boolean isMCOrgLocal()
マルチキャストアドレスに組織スコープがあるかどうかを調べるユーティリティルーチンです

戻り値:
アドレスが組織ローカルスコープのマルチキャストアドレスであるかどうかを示す boolean。アドレスが組織ローカルスコープでない場合、あるいはマルチキャストアドレスでない場合は false
導入されたバージョン:
1.4

isReachable

public boolean isReachable(int timeout)
                    throws IOException
アドレスが到達可能かどうかをテストします。実装によりホストに到達するために最善が尽くされますが、ファイアウォールおよびサーバ構成によるブロックのため、いくつかの特定のポートがアクセス可能であっても、要求の結果が到達不可能ステータスになることがあります。一般的な実装では、権限が取得できる場合は ICMP ECHO REQUEST が使用されます。そうでない場合、目的のホストのポート 7 (Echo) で TCP 接続の確立が試行されます。

タイムアウト値 (ミリ秒) は、その試行にかける最大時間を示します。操作が応答を得る前にタイムアウトした場合、ホストは到達不可能と見なされます。負の値の場合、IllegalArgumentException がスローされます。

パラメータ:
timeout - 呼び出しが中止されるまでの時間 (ミリ秒)
戻り値:
アドレス到達可能かどうかを示す boolean
例外:
IOException - ネットワークエラーが発生した場合
IllegalArgumentException - timeout が負の値の場合
導入されたバージョン:
1.5

isReachable

public boolean isReachable(NetworkInterface netif,
                           int ttl,
                           int timeout)
                    throws IOException
アドレスが到達可能かどうかをテストします。実装によりホストに到達するために最善が尽くされますが、ファイアウォールおよびサーバ構成によるブロックのため、いくつかの特定のポートがアクセス可能であっても、要求の結果が到達不可能ステータスになることがあります。一般的な実装では、権限が取得できる場合は ICMP ECHO REQUEST が使用されます。そうでない場合、目的のホストのポート 7 (Echo) で TCP 接続の確立が試行されます。

呼び出し側は、network interface および ttl パラメータを使用して、テストを実行するネットワークインタフェースとパケットが転送されるホップの最大数を指定します。ttl が負の値である場合、IllegalArgumentException がスローされます。

タイムアウト値 (ミリ秒) は、その試行にかける最大時間を示します。操作が応答を得る前にタイムアウトした場合、ホストは到達不可能と見なされます。負の値の場合、IllegalArgumentException がスローされます。

パラメータ:
netif - テストを実行する NetworkInterface。任意のインタフェースの場合は null
ttl - 試行するホップの最大数。デフォルトでは 0
timeout - 呼び出しが中止されるまでの時間 (ミリ秒)
戻り値:
アドレス到達可能かどうかを示す boolean
例外:
IllegalArgumentException - timeout または ttl が負の場合
IOException - ネットワークエラーが発生した場合
導入されたバージョン:
1.5

getHostName

public String getHostName()
この IP アドレスに対応するホスト名を取得します。

この InetAddress がホスト名を使用して作成された場合は、このホスト名が保存されて返されます。そうでない場合は、逆ネーム参照が実行されて、システムに設定されたネーム参照サービスに基づいて結果が返されます。ネームサービスの参照が必要な場合は、getCanonicalHostName を呼び出します。

セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkConnect メソッドが、引数としてホスト名および -1 を指定して呼び出され、この操作が許可されているかどうかを確認します。操作が許可されていない場合は、IP アドレスのテキスト表現を返します。

戻り値:
この IP アドレスのホスト名。セキュリティチェックにより操作が許可されない場合は、IP アドレスのテキスト表現
関連項目:
getCanonicalHostName(), SecurityManager.checkConnect(java.lang.String, int)

getCanonicalHostName

public String getCanonicalHostName()
この IP アドレスの完全修飾ドメイン名を取得します。これはベストエフォート型のメソッドです。つまり、背後のシステム構成によっては FQDN を返すことができない場合があります。

セキュリティマネージャが存在する場合、このメソッドはまずセキュリティマネージャの checkConnect メソッドを引数としてホスト名と -1 を指定して呼び出して、呼び出し側のコードがこの IP アドレスのホスト名を認識する、つまりホストに接続することが許可されているかどうかを確認します。操作が許可されていない場合は、IP アドレスのテキスト表現を返します。

戻り値:
この IP アドレスの完全修飾ドメイン名。セキュリティチェックにより操作が許可されない場合は、IP アドレスのテキスト表現
導入されたバージョン:
1.4
関連項目:
SecurityManager.checkConnect(java.lang.String, int)

getAddress

public byte[] getAddress()
この InetAddress オブジェクトの IP アドレスをそのまま返します。結果は、ネットワークバイト順序に従って返されます。アドレスの最上位バイトが getAddress()[0] になります。

戻り値:
このオブジェクトの IP アドレス

getHostAddress

public String getHostAddress()
テキスト表現の IP アドレス文字列を返します。

戻り値:
IP アドレスの文字列形式
導入されたバージョン:
JDK1.0.2

hashCode

public int hashCode()
この IP アドレスのハッシュコードを返します。

オーバーライド:
クラス Object 内の hashCode
戻り値:
この IP アドレスのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

equals

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

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

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

toString

public String toString()
この IP アドレスを String に変換します。返される文字列の書式は、「ホスト名/リテラル IP アドレス」です。 ホスト名が解決されない場合、逆ネームサービス参照は実行されません。ホスト名部分は空の文字列で表されます。

オーバーライド:
クラス Object 内の toString
戻り値:
この IP アドレスの文字列表現

getByAddress

public static InetAddress getByAddress(String host,
                                       byte[] addr)
                                throws UnknownHostException
指定されたホスト名および IP アドレスに基づいて InetAddress を作成します。アドレスの有効性を確認するためのネームサービスのチェックは行われません。

ホスト名は、「java.sun.com」などのマシン名か、またはその IP アドレスのテキスト表現です。

ホスト名についても有効性チェックは実行されません。

addr に IPv4 アドレスを指定すると、Inet4Address のインスタンスが返されます。そうでない場合は、Inet6Address のインスタンスが返されます。

IPv4 アドレスのバイト配列は 4 バイト長、IPv6 のバイト配列は 16 バイト長でなければなりません。

パラメータ:
host - 指定されたホスト
addr - ネットワークバイト順序の IP アドレス
戻り値:
IP アドレスから作成された InetAddress オブジェクト
例外:
UnknownHostException - IP アドレスの長さが不正の場合
導入されたバージョン:
1.4

getByName

public static InetAddress getByName(String host)
                             throws UnknownHostException
指定されたホスト名を持つホストの IP アドレスを取得します。

ホスト名は「java.sun.com」のようなマシン名か、IP アドレスのテキスト表現です。リテラル IP アドレスが指定された場合、アドレス形式の有効性だけをチェックします。

リテラル IPv6 アドレスで指定される host については、RFC 2732 で定義されている形式か、RFC 2373 で定義されているリテラル IPv6 アドレス形式が可能です。IPv6 スコープアドレスもサポートされています。IPv6 スコープアドレスの詳細は、ここを参照してください。

ホストが null の場合、ループバックインタフェースのアドレスを表す InetAddress が返されます。「RFC 3330」のセクション 2 および「RFC 2373」のセクション 2.5.3 を参照してください。

パラメータ:
host - 指定されたホスト、または null
戻り値:
指定されたホスト名の IP アドレス
例外:
UnknownHostException - host に指定された IP アドレスが見つからなかった、またはグローバル IPv6 アドレスの scope_id が指定された場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkConnect メソッドがこの操作を許可しない場合

getAllByName

public static InetAddress[] getAllByName(String host)
                                  throws UnknownHostException
ホスト名を指定すると、システムに設定されているネームサービスに基づいてその IP アドレスの配列を返します。

ホスト名は「java.sun.com」のようなマシン名か、IP アドレスのテキスト表現です。リテラル IP アドレスが指定された場合、アドレス形式の有効性だけをチェックします。

「リテラル IPv6 アドレス」で指定される host については、RFC 2732 で定義されている形式か、RFC 2373 で定義されているリテラル IPv6 アドレス形式が可能です。スコープゾーン識別子または scope_id を付加することで、リテラル IPv6 アドレスもサポートされます。scope_id の構文と使用方法は、ここを参照してください。

ホストが null の場合、ループバックインタフェースのアドレスを表す InetAddress が返されます。「RFC 3330」のセクション 2 および「RFC 2373」のセクション 2.5.3 を参照してください。

セキュリティマネージャが存在する場合、host が null ではなく、host.length() の値が 0 ではないときは、セキュリティマネージャの checkConnect メソッドが、引数としてホスト名と -1 を指定して呼び出され、この操作が許可されていることを確認します。

パラメータ:
host - ホスト名、または null
戻り値:
指定されたホスト名のすべての IP アドレスを含む配列
例外:
UnknownHostException - host に指定された IP アドレスが見つからなかった、またはグローバル IPv6 アドレスの scope_id が指定された場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkConnect メソッドがこの操作を許可しない場合
関連項目:
SecurityManager.checkConnect(java.lang.String, int)

getByAddress

public static InetAddress getByAddress(byte[] addr)
                                throws UnknownHostException
そのままの IP アドレスを持つ InetAddress オブジェクトを返します。引数はネットワークバイト順序で、アドレスの最上位バイトが getAddress()[0] になります。

このメソッドはブロックしません。つまり、逆ネームサービス参照は実行されません。

IPv4 アドレスのバイト配列は 4 バイト長、IPv6 のバイト配列は 16 バイト長でなければなりません。

パラメータ:
addr - ネットワークバイト順序の IP アドレス
戻り値:
IP アドレスから作成された InetAddress オブジェクト
例外:
UnknownHostException - IP アドレスの長さが不正の場合
導入されたバージョン:
1.4

getLocalHost

public static InetAddress getLocalHost()
                                throws UnknownHostException
ローカルホストを返します。

セキュリティマネージャが存在する場合、セキュリティマネージャの checkConnect メソッドが、引数としてローカルホスト名および -1 を指定して呼び出され、この操作が許可されているかどうかを確認します。操作が許可されていない場合は、参照アドレスを表す InetAddress が返されます。

戻り値:
ローカルホストの IP アドレス
例外:
UnknownHostException - host 引数に指定されたホストの IP アドレスが見つからなかった場合
関連項目:
SecurityManager.checkConnect(java.lang.String, int)

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。