|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
ソケットのオプションを取得または設定するメソッドのインタフェースです。このインタフェースは SocketImpl および DatagramSocketImpl によって実装されます。これらのサブクラスで独自のオプションをサポートするには、このインタフェースのメソッドをオーバーライドしてください。
このインタフェースでオプションを指定しているメソッドと定数は、実装のためだけのものです。SocketImpl または DatagramSocketImpl をサブクラス化しない場合は、これらを直接使用しないでください。Socket、ServerSocket、DatagramSocket、および MulticastSocket 内のそれぞれのオプションを取得および設定するための、型に対して安全なメソッドがあるのでそれを使います。
基底クラスでは、標準的な BSD スタイルのソケットオプションのサブセットである PlainSocketImpl および PlainDatagramSocketImpl をサポートしています。これらについて、使い方などを簡単に説明します。
| フィールドの概要 | |
static int |
IP_MULTICAST_IF
マルチキャストパケットを送信する送出インタフェースをどれにするか設定します。 |
static int |
SO_BINDADDR
ソケットのローカルアドレスへのバインドを取得します。 |
static int |
SO_KEEPALIVE
TCP ソケットに KeepAlive オプションが設定されていて、ソケットを介してどちらの方向にもデータが 2 時間 (注: 実際の値は実装による) の間交換されていない場合、TCP は自動的に KeepAlive プローブをピアへ送信します。 |
static int |
SO_LINGER
linger-on-close タイムアウトを指定します。 |
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 で指定されたオプションを有効または無効にします。 |
| フィールドの詳細 |
public static final int TCP_NODELAY
TCP だけに有効: SocketImpl
Socket.setTcpNoDelay(boolean),
Socket.getTcpNoDelay()public static final int SO_BINDADDR
このオプションは、コンストラクタの中で指定されなければなりません。
有効: SocketImpl、DatagramSocketImpl
Socket.getLocalAddress(),
DatagramSocket.getLocalAddress()public static final int SO_REUSEADDR
有効: DatagramSocketImpl
public static final int IP_MULTICAST_IF
マルチキャストに有効: DatagramSocketImpl
MulticastSocket.setInterface(java.net.InetAddress),
MulticastSocket.getInterface()public static final int SO_LINGER
TCP にだけ有効: SocketImpl
Socket.setSoLinger(boolean, int),
Socket.getSoLinger()public 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)public static final int SO_SNDBUF
Socket.setSendBufferSize(int),
Socket.getSendBufferSize(),
DatagramSocket.setSendBufferSize(int),
DatagramSocket.getSendBufferSize()public static final int SO_RCVBUF
Socket.setReceiveBufferSize(int),
Socket.getReceiveBufferSize(),
DatagramSocket.setReceiveBufferSize(int),
DatagramSocket.getReceiveBufferSize()public static final int SO_KEEPALIVE
Socket.setKeepAlive(boolean),
Socket.getKeepAlive()| メソッドの詳細 |
public 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)
public 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)
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.