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 のアルゴリズムを無効にします。
|
static final int TCP_NODELAY
TCP だけに有効: SocketImpl。
static final int SO_BINDADDR
このオプションは、コンストラクタの中で指定されなければいけません。
有効: SocketImpl、DatagramSocketImpl
static final int SO_REUSEADDR
有効: DatagramSocketImpl
static final int SO_BROADCAST
static final int IP_MULTICAST_IF
マルチキャストに有効: DatagramSocketImpl
static final int IP_MULTICAST_IF2
MulticastSocket.setNetworkInterface(NetworkInterface)
, MulticastSocket.getNetworkInterface()
, 定数フィールド値static final int IP_MULTICAST_LOOP
static final int IP_TOS
static final int SO_LINGER
TCP にだけ有効: SocketImpl
static final int SO_TIMEOUT
ServerSocket.accept(); SocketInputStream.read(); DatagramSocket.receive();
このオプションは、ブロック処理に入る前に設定してください。そうしないと効果がありません。タイムアウトの期限が切れても操作のブロックが継続している場合、java.io.InterruptedIOException が発行されます。この場合、ソケットはクローズされません。
すべてのソケットに対して有効: SocketImpl、DatagramSocketImpl
static final int SO_SNDBUF
static final int SO_RCVBUF
static final int SO_KEEPALIVE
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, 2013, Oracle and/or its affiliates. All rights reserved.