JavaTM Platform
Standard Ed. 6

java.net
インタフェース SocketOptions

既知の実装クラスの一覧:
DatagramSocketImpl, SocketImpl

public interface SocketOptions

ソケットオプションを取得/設定するメソッドのインタフェース。このインタフェースは SocketImplDatagramSocketImpl によって実装されています。これらのサブクラスで独自のオプションをサポートするには、このインタフェースのメソッドをオーバーライドしてください。  

このインタフェース内の、オプションを指定するためのメソッドと定数は、実装専用です。SocketImpl または DatagramSocketImpl のサブクラスを作成しない場合には、これらを直接使用しないでください。Socket、ServerSocket、DatagramSocket、および MulticastSocket には、これらの各オプションを取得/設定するための型保証されたメソッドが存在しています。  


フィールドの概要
static int IP_MULTICAST_IF
          マルチキャストパケットを送信する送出インタフェースをどれにするか設定します。
static int IP_MULTICAST_IF2
          上記と同じです。
static int IP_MULTICAST_LOOP
          このオプションは、マルチキャストデータグラムのローカルループバックを有効または無効にします。
static int IP_TOS
          このオプションは、TCP または UDP ソケットの IP ヘッダーのサービスの型またはトラフィッククラスフィールドを設定します。
static int SO_BINDADDR
          ソケットのローカルアドレスへのバインドを取得します。
static int SO_BROADCAST
          ソケットの SO_BROADCAST を設定します。
static int SO_KEEPALIVE
          TCP ソケットでキープアライブオプションが設定されていて、2 時間 (注: 実際の値は実装に依存する) の間、そのソケット経由でどちらの向きにもデータが交換されなかった場合、TCP は自動的に、キープアライブプローブをピアに送信します。
static int SO_LINGER
          linger-on-close タイムアウトを指定します。
static int SO_OOBINLINE
          OOBINLINE オプションが設定された場合、そのソケット上で受信される TCP 緊急データはすべて、そのソケットの入力ストリーム経由で受信されます。
static int SO_RCVBUF
          プラットフォームが受信時のネットワーク入出力用として使用するバッファーのサイズのヒントを設定します。
static int SO_REUSEADDR
          ソケットの SO_REUSEADDR を設定します。
static int SO_SNDBUF
          プラットフォームが送信時のネットワーク入出力用として使用するバッファーのサイズのヒントを設定します。
static int SO_TIMEOUT
          ソケット操作のブロックにタイムアウトを設定します。
static int TCP_NODELAY
          この接続で Nagle のアルゴリズムを無効にします。
 
メソッドの概要
 Object getOption(int optID)
          オプションの値を取得します。
 void setOption(int optID, Object value)
          optID で指定されたオプションを有効または無効にします。
 

フィールドの詳細

TCP_NODELAY

static final int TCP_NODELAY
この接続で Nagle のアルゴリズムを無効にします。ネットワークに書き込まれたデータは、以前に書き込まれたデータが確認されるまでバッファー内に格納されません。

TCP だけに有効: SocketImpl。  

関連項目:
Socket.setTcpNoDelay(boolean), Socket.getTcpNoDelay(), 定数フィールド値

SO_BINDADDR

static final int SO_BINDADDR
ソケットのローカルアドレスへのバインドを取得します。このオプションを「設定」することはできません。行えるのは「取得」のみです。なぜなら、ソケットは作成時にバインドされるため、ローカルでバインドされたアドレスは変更できないからです。ソケットのデフォルトのローカルアドレスは、INADDR_ANY です。これは、マルチホームのホスト上にある任意のローカルアドレスを意味します。マルチホームのホストは、このオプションを使用することで、複数のアドレスの 1 つだけで接続を受け入れたり (ServerSocket または DatagramSocket の場合)、ピアへのリターンアドレスを指定したり (Socket または DatagramSocket の場合) できます。このオプションのパラメータは、InetAddress です。  

このオプションは、コンストラクタの中で指定されなければなりません。  

有効: SocketImpl、DatagramSocketImpl  

関連項目:
Socket.getLocalAddress(), DatagramSocket.getLocalAddress(), 定数フィールド値

SO_REUSEADDR

static final int SO_REUSEADDR
ソケットの SO_REUSEADDR を設定します。これは、java では MulticastSocket 専用であり、MulticastSocket ではデフォルトで設定されます。  

有効: DatagramSocketImpl

関連項目:
定数フィールド値

SO_BROADCAST

static final int SO_BROADCAST
ソケットの SO_BROADCAST を設定します。このオプションは、ブロードキャストメッセージを送信する機能を有効または無効にします。これがサポートされるのは、Ethernet やトークンリングといったブロードキャストメッセージの概念をサポートするネットワーク上のデータグラムソケットに対してだけです。DatagramSocket ではこれがデフォルトで設定されます。

導入されたバージョン:
1.4
関連項目:
定数フィールド値

IP_MULTICAST_IF

static final int IP_MULTICAST_IF
マルチキャストパケットを送信する送出インタフェースをどれにするか設定します。複数のネットワークインタフェースを持つホスト上で、アプリケーションがシステムのデフォルト以外を使用する必要がある場合に役立ちます。InetAddress を取得したり、返したりします。  

マルチキャストに有効: DatagramSocketImpl  

関連項目:
MulticastSocket.setInterface(InetAddress), MulticastSocket.getInterface(), 定数フィールド値

IP_MULTICAST_IF2

static final int IP_MULTICAST_IF2
上記と同じです。このオプションの導入目的は、IP_MULTICAST_IF の動作は以前と同じに保ちつつ、IPv4 アドレス、IPv6 アドレスのいずれかによる送出インタフェースの設定をこの新しいオプションでサポートできるようにすることです。 注:これとの衝突が発生しないように注意してください

導入されたバージョン:
1.4
関連項目:
MulticastSocket.setNetworkInterface(NetworkInterface), MulticastSocket.getNetworkInterface(), 定数フィールド値

IP_MULTICAST_LOOP

static final int IP_MULTICAST_LOOP
このオプションは、マルチキャストデータグラムのローカルループバックを有効または無効にします。マルチキャストソケットでは、このオプションがデフォルトで有効になります。

導入されたバージョン:
1.4
関連項目:
定数フィールド値

IP_TOS

static final int IP_TOS
このオプションは、TCP または UDP ソケットの IP ヘッダーのサービスの型またはトラフィッククラスフィールドを設定します。

導入されたバージョン:
1.4
関連項目:
定数フィールド値

SO_LINGER

static final int SO_LINGER
linger-on-close タイムアウトを指定します。このオプションは、TCP ソケットの close() からの即時リターンを無効または有効にします。0 以外の整数の「タイムアウト」を使ってこのオプションを有効にした場合、ピアに書き込まれたすべてのデータの送信と確認が完了するまで close() がブロックされます。そして、それらが完了した時点でソケットは「正常に」クローズされます。遅延タイムアウトに達すると、ソケットは TCP RST で「強制的に」クローズされます。0 のタイムアウトでこのオプションを有効にした場合、すぐに強制クローズが実行されます。指定されたタイムアウト値が 65,535 を超えている場合、その値は 65,535 に減らされます。 

TCP にだけ有効: SocketImpl

関連項目:
Socket.setSoLinger(boolean, int), Socket.getSoLinger(), 定数フィールド値

SO_TIMEOUT

static final int SO_TIMEOUT
ソケット操作のブロックにタイムアウトを設定します。
ServerSocket.accept();
SocketInputStream.read();
DatagramSocket.receive();
 

このオプションは、ブロック処理に入る前に設定してください。そうしないと効果がありません。タイムアウトの期限が切れても操作のブロックが継続している場合、java.io.InterruptedIOException が発行されます。この場合、ソケットはクローズされません。

すべてのソケットで有効: SocketImpl、DatagramSocketImpl

関連項目:
Socket.setSoTimeout(int), ServerSocket.setSoTimeout(int), DatagramSocket.setSoTimeout(int), 定数フィールド値

SO_SNDBUF

static final int SO_SNDBUF
プラットフォームが送信時のネットワーク入出力用として使用するバッファーのサイズのヒントを設定します。設定時に使用された場合、これは、ソケット経由で送信するデータ用のバッファーのサイズに関する、アプリケーションからカーネルへの推奨値になります。取得時に使用された場合、これは、このソケット上でのデータ送信時にプラットフォームが実際に使用するバッファーのサイズが返されます。 すべてのソケットで有効: SocketImpl、DatagramSocketImpl

関連項目:
Socket.setSendBufferSize(int), Socket.getSendBufferSize(), DatagramSocket.setSendBufferSize(int), DatagramSocket.getSendBufferSize(), 定数フィールド値

SO_RCVBUF

static final int SO_RCVBUF
プラットフォームが受信時のネットワーク入出力用として使用するバッファーのサイズのヒントを設定します。設定時に使用された場合、これは、ソケット経由で受信するデータ用のバッファーのサイズに関する、アプリケーションからカーネルへの推奨値になります。取得時に使用された場合、これは、このソケット上でのデータ受信時にプラットフォームが実際に使用するバッファーのサイズが返されます。 すべてのソケットで有効: SocketImpl、DatagramSocketImpl

関連項目:
Socket.setReceiveBufferSize(int), Socket.getReceiveBufferSize(), DatagramSocket.setReceiveBufferSize(int), DatagramSocket.getReceiveBufferSize(), 定数フィールド値

SO_KEEPALIVE

static final int SO_KEEPALIVE
TCP ソケットでキープアライブオプションが設定されていて、2 時間 (注: 実際の値は実装に依存する) の間、そのソケット経由でどちらの向きにもデータが交換されなかった場合、TCP は自動的に、キープアライブプローブをピアに送信します。このプローブは、ピアが応答しなければいけない TCP セグメントです。予想される応答は、次の 3 つのうちのいずれかです。1. ピアは予想される ACK で応答する。アプリケーションには通知されない (何も問題がないため)。その後、非活動状態が 2 時間続くと、TCP は再度プローブを送信する。2. ピアが RST で応答する。これは、ピアのホストがクラッシュし、リブートしたことをローカル TCP に伝える役割を果たす。ソケットはクローズされる。3. ピアからの応答がない。ソケットはクローズされる。 このオプションの目的は、ピアホストがクラッシュした場合に検出することです。 TCP ソケットにだけ有効: SocketImpl

関連項目:
Socket.setKeepAlive(boolean), Socket.getKeepAlive(), 定数フィールド値

SO_OOBINLINE

static final int SO_OOBINLINE
OOBINLINE オプションが設定された場合、そのソケット上で受信される TCP 緊急データはすべて、そのソケットの入力ストリーム経由で受信されます。このオプションが無効になっている場合 (それがデフォルト)、緊急データは何の通知もなく破棄されます。

関連項目:
Socket.setOOBInline(boolean), Socket.getOOBInline(), 定数フィールド値
メソッドの詳細

setOption

void setOption(int optID,
               Object value)
               throws SocketException
optID で指定されたオプションを有効または無効にします。有効にすべきオプションがオプションに固有の「値」を取る場合、その値を value に指定します。値の実際の型はオプションに固有であり、期待される型でない値を渡すとエラーになります。
SocketImpl s;
 ...
s.setOption(SO_LINGER, new Integer(10));
// OK - set SO_LINGER w/ timeout of 10 sec.
s.setOption(SO_LINGER, new Double(10));
// ERROR - expects java.lang.Integer
要求されるオプションがバイナリ値の場合は、java.lang.Boolean による次のメソッドを使って設定できます。
s.setOption(TCP_NODELAY, new Boolean(true));
// OK - enables TCP_NODELAY, a binary option
 

Boolean(false) とともにこのメソッドを使うと、任意のオプションを無効にできます。
s.setOption(TCP_NODELAY, new Boolean(false));
// OK - disables TCP_NODELAY
s.setOption(SO_LINGER, new Boolean(false));
// OK - disables SO_LINGER
 

オン/オフの概念があり、boolean 型でないパラメータを必要とするオプションの場合は、この値を Boolean(false) 以外に設定すると、そのオプションが暗黙のうちに有効になります。
オプションが認識されない場合、ソケットが閉じられている場合、あるいはなんらかの低レベルのエラーが発生した場合には、SocketException がスローされます。

パラメータ:
optID - オプションの ID (識別子)
value - ソケットのオプションのパラメータ
例外:
SocketException - オプションが認識されない場合、ソケットが閉じられている場合、あるいはなんらかの低レベルのエラーが発生した場合
関連項目:
getOption(int)

getOption

Object getOption(int optID)
                 throws SocketException
オプションの値を取得します。バイナリ値のオプションは、有効であれば java.lang.Boolean(true) を返し、無効であれば java.lang.Boolean(false) を返します。次に例を示します。
SocketImpl s;
 ...
Boolean noDelay = (Boolean)(s.getOption(TCP_NODELAY));
if (noDelay.booleanValue()) {
// true if TCP_NODELAY is enabled...
 ...
 }
 

特定の型をパラメータとしてとるオプションについては、getOption(int) はパラメータの値を返します。そうでない場合は、java.lang.Boolean(false) が返されます。

Object o = s.getOption(SO_LINGER);
if (o instanceof Integer) {
System.out.print("Linger time is " + ((Integer)o).intValue());
} else {
// the true type of o is java.lang.Boolean(false);
 }
 

パラメータ:
optID - 取得するオプションを指定した int
戻り値:
オプションの値
例外:
SocketException - ソケットが閉じられている場合
SocketException - optID がプロトコルスタック (SocketImpl を含む) に基づいて未知である場合
関連項目:
setOption(int, java.lang.Object)

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 も参照してください。