JavaTM Platform
Standard Ed. 6

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

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

IP アドレスのスコープ

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

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

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

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

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

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

ホスト名解決

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

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

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

InetAddress のキャッシュ

InetAddress クラスは、成功したホスト名解決と失敗したホスト名解決を格納するためのキャッシュを備えています。

デフォルトでは、セキュリティーマネージャーがインストールされている場合は、DNS なりすまし攻撃から身を守るため、成功したホスト名解決の結果が永続的にキャッシュされます。セキュリティーマネージャーがインストールされていない場合のデフォルト動作では、ある限られた期間 (実装に依存する) だけエントリがキャッシュされます。失敗したホスト名解決の結果は、パフォーマンスの向上のために短時間 (10 秒) だけキャッシュされます。

デフォルト動作が要求に合わない場合は、ポジティブキャッシュ用の Java セキュリティープロパティーを異なる有効期間 (TTL) 値に設定することができます。同様に、システム管理者は、異なるネガティブキャッシュ TTL 値を必要に応じて設定することができます。

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

networkaddress.cache.ttl
ネームサービスによる成功した名前検索に対するキャッシングポリシーを示します。指定する値は、成功した検索結果をキャッシュする秒数を示す整数です。デフォルト設定は、実装に固有の期間キャッシュすることです。  

-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 接続を確立しようとします。  

ネットワークインタフェースパラメータと 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 を返せない可能性があります。

セキュリティーマネージャーが存在する場合、このメソッドはまず、ホスト名と -1 を引数に指定してその checkConnect メソッドを呼び出し、呼び出し元のコードがこの 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 スコープアドレスについては、ここを参照してください。

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

パラメータ:
host - 指定されたホストまたは null
戻り値:
指定されたホスト名の IP アドレス
例外:
UnknownHostException - host の IP アドレスが見つからなかった場合、またはグローバル IPv6 アドレスでスコープ 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 アドレス形式が可能です。リテラル IPv6 アドレスは修飾することも可能です。それにはスコープゾーン識別子、つまり スコープ ID を末尾に追加します。スコープ ID の構文や使用方法については、ここを参照してください。 

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

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

パラメータ:
host - ホスト名、または null
戻り値:
指定されたホスト名のすべての IP アドレスを含む配列
例外:
UnknownHostException - host の IP アドレスが見つからなかった場合、またはグローバル IPv6 アドレスでスコープ 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 Platform
Standard Ed. 6

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

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