public interface SocketOptions
このインタフェース内の、オプションを指定するためのメソッドと定数は、実装専用です。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のアルゴリズムを無効にします。
|
@Native static final int TCP_NODELAY
TCPだけに有効: SocketImpl。
@Native static final int SO_BINDADDR
このオプションは、コンストラクタの中で指定されなければいけません。
有効: SocketImpl、DatagramSocketImpl
@Native static final int SO_REUSEADDR
有効: DatagramSocketImpl
@Native static final int SO_BROADCAST
@Native static final int IP_MULTICAST_IF
マルチキャストに有効: DatagramSocketImpl
@Native static final int IP_MULTICAST_IF2
MulticastSocket.setNetworkInterface(NetworkInterface)
, MulticastSocket.getNetworkInterface()
, 定数フィールド値@Native static final int IP_MULTICAST_LOOP
@Native static final int IP_TOS
@Native static final int SO_LINGER
TCPにだけ有効: SocketImpl
@Native static final int SO_TIMEOUT
ServerSocket.accept(); SocketInputStream.read(); DatagramSocket.receive();
このオプションは、ブロック処理に入る前に設定してください。そうしないと効果がありません。タイムアウトの期限が切れても操作のブロックが継続している場合、java.io.InterruptedIOExceptionが発行されます。この場合、ソケットはクローズされません。
すべてのソケットに対して有効: SocketImpl、DatagramSocketImpl
@Native static final int SO_SNDBUF
@Native static final int SO_RCVBUF
@Native static final int SO_KEEPALIVE
@Native static final int SO_OOBINLINE
void setOption(int optID, Object value) throws SocketException
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
s.setOption(TCP_NODELAY, new Boolean(false)); // OK - disables TCP_NODELAY s.setOption(SO_LINGER, new Boolean(false)); // OK - disables SO_LINGER
optID
−オプションのID (識別子)value
−ソケットのオプションのパラメータSocketException
−オプションが認識されない場合、ソケットが閉じられている場合、あるいはなんらかの低レベルのエラーが発生した場合getOption(int)
Object getOption(int optID) throws SocketException
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)
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.