public abstract class ServerSocketChannel extends AbstractSelectableChannel implements NetworkChannel
このクラスの open
メソッドを呼び出すと、サーバーソケットチャネルが作成されます。任意の既存の ServerSocket
のチャネルを作成することはできません。新しく作成されたサーバーソケットチャネルはオープンですが、未バインドです。バインドされていないサーバーソケットチャネルの accept
メソッドを呼び出そうとすると、NotYetBoundException
がスローされます。サーバーソケットチャネルは、このクラスによって定義される bind
メソッドの 1 つを呼び出すことによってバインドできます。
ソケットオプションは setOption
メソッドを使用して構成されます。サーバーソケットチャネルでは次のオプションがサポートされます。
追加 (実装固有) のオプションをサポートできる場合もあります。
オプション名 説明 SO_RCVBUF
ソケット受信バッファーのサイズ SO_REUSEADDR
アドレスを再利用します
サーバーソケットチャネルは、複数の並行スレッドで安全に使用できます。
修飾子 | コンストラクタと説明 |
---|---|
protected |
ServerSocketChannel(SelectorProvider provider)
このクラスの新しいインスタンスを初期化します。
|
修飾子と型 | メソッドと説明 |
---|---|
abstract SocketChannel |
accept()
このチャネルのソケットに対する接続を受け付けます。
|
ServerSocketChannel |
bind(SocketAddress local)
チャネルのソケットをローカルアドレスにバインドし、接続を待機するようソケットを構成します。
|
abstract ServerSocketChannel |
bind(SocketAddress local, int backlog)
チャネルのソケットをローカルアドレスにバインドし、接続を待機するようソケットを構成します。
|
static ServerSocketChannel |
open()
サーバーソケットチャネルをオープンします。
|
abstract <T> ServerSocketChannel |
setOption(SocketOption<T> name, T value)
ソケットオプションの値を設定します。
|
abstract ServerSocket |
socket()
このチャネルに関連したサーバーソケットを取得します。
|
int |
validOps()
このチャネルのサポートされている操作を識別する操作セットを返します。
|
blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register
register
begin, close, end, isOpen
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getLocalAddress, getOption, supportedOptions
protected ServerSocketChannel(SelectorProvider provider)
public static ServerSocketChannel open() throws IOException
システム全体のデフォルト SelectorProvider
オブジェクトの openServerSocketChannel
メソッドを呼び出すことで、新しいチャネルが作成されます。
新しいチャネルのソケットは、初期状態では未バインドです。ソケットの bind
メソッドの 1 つを使って特定のアドレスにバインドしないと、接続は受け付けられません。
IOException
- 入出力エラーが発生した場合public final int validOps()
サーバーソケットチャネルは、新しい接続の受け付けだけをサポートします。したがって、このメソッドは SelectionKey.OP_ACCEPT
を返します。
validOps
、クラス: SelectableChannel
public final ServerSocketChannel bind(SocketAddress local) throws IOException
このメソッドの呼び出しは次と同等です。
bind(local, 0);
bind
、インタフェース: NetworkChannel
local
- ソケットのバインド先のローカルアドレス、または自動的に割り当てられるソケットアドレスにバインドする場合は null
AlreadyBoundException
- ソケットがすでにバインドされている場合UnsupportedAddressTypeException
- 指定されたアドレスのタイプがサポート対象外の場合ClosedChannelException
- チャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合SecurityException
- セキュリティーマネージャーがインストールされていて、その checkListen
メソッドが操作を拒否した場合NetworkChannel.getLocalAddress()
public abstract ServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
このメソッドは、ソケットとローカルアドレスとの間の関連付けを確立するために使用されます。関連付けが確立されると、ソケットはチャネルが閉じられるまでバインドされたままになります。
backlog
パラメータは、ソケットの保留されている接続の最大数です。正確なセマンティクスは実装に固有です。たとえば、実装が最大長を規定していたり、パラメータをまったく無視したりする場合があります。backlog
パラメータの値が 0
または負の値の場合、実装固有のデフォルトが使用されます。
local
- ソケットのバインド先のアドレス、または自動的に割り当てられるソケットアドレスにバインドする場合は null
backlog
- 保留されている接続の最大数。AlreadyBoundException
- ソケットがすでにバインドされている場合UnsupportedAddressTypeException
- 指定されたアドレスのタイプがサポート対象外の場合ClosedChannelException
- このチャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合SecurityException
- セキュリティーマネージャーがインストールされていて、その checkListen
メソッドが操作を拒否した場合public abstract <T> ServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException
NetworkChannel
setOption
、インタフェース: NetworkChannel
name
- ソケットオプションvalue
- ソケットオプションの値。一部のソケットオプションに対しては、null
の値が有効な値である場合があります。UnsupportedOperationException
- チャネルがソケットオプションをサポートしていない場合IllegalArgumentException
- 値がこのソケットオプションに対して有効な値でない場合ClosedChannelException
- このチャネルがクローズしている場合IOException
- 入出力エラーが発生した場合StandardSocketOptions
public abstract ServerSocket socket()
返されるオブジェクトは、ServerSocket
クラスで宣言されていない public メソッドは宣言しません。
public abstract SocketChannel accept() throws IOException
このチャネルが非ブロックモードの場合、保留されている接続がなければ、このメソッドはただちに null を返します。それ以外の場合、新しい接続が利用可能になるか、入出力エラーが発生するまで無期限にブロックされます。
このメソッドによって返されるソケットチャネルは、このチャネルがブロックモードであってもそうでなくてもブロックモードになります。
このメソッドは、ServerSocket
クラスの accept
メソッドとまったく同じセキュリティーチェックを行います。セキュリティーマネージャーがインストールされている場合、このメソッドは、新しい各接続のリモートエンドポイントのアドレスとポート番号がセキュリティーマネージャーの checkAccept
メソッドによって許可されていることを確認します。
ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 受け付け操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 受け付け操作の進行中に、現在のスレッドに対して別のスレッドから割り込みがあったためにチャネルがクローズし、現在のスレッドの割り込みステータスが設定された場合NotYetBoundException
- このチャネルのソケットが未バインドの場合SecurityException
- セキュリティーマネージャーがインストールされていて、新しい接続のリモートエンドポイントへのアクセスが許可されていない場合IOException
- その他の入出力エラーが発生した場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.