JavaTM 2
Platform
Std. Ed. v1.4.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」を参照してください。IPv6 のアドレス形式については、「Inet6Address」を参照してください。

ホスト名解決

ホスト名と 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 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

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 アドレスのテキスト表現です。

リテラル IPv6 アドレスで指定される host については、RFC 2732 で定義されている形式か、RFC 2373 で定義されているリテラル IPv6 アドレス形式が可能です。

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 アドレス形式が可能です。

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

getAllByName

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

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

リテラル IPv6 アドレスで指定される host については、RFC 2732 で定義されている形式か、RFC 2373 で定義されているリテラル IPv6 アドレス形式が可能です。

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

パラメータ:
host - ホスト名
戻り値:
指定されたホスト名のすべての IP アドレスを含む配列
例外:
UnknownHostException - host 引数に指定されたホストの IP アドレスが見つからない場合
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
Std. Ed. v1.4.0

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

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.