public abstract class AsynchronousServerSocketChannel extends Object implements AsynchronousChannel, NetworkChannel
このクラスの open
メソッドを呼び出すと、非同期のサーバーソケットチャネルが作成されます。新しく作成された非同期のサーバーソケットチャネルはオープンですが、未バインドです。これは、ローカルアドレスにバインドでき、bind
メソッドを呼び出すことで接続を待機するよう構成できます。バインド後に、accept
メソッドを使用して、チャネルのソケットへの接続の受け付けが開始されます。バインドされていないチャネルの accept メソッドを呼び出そうとすると、NotYetBoundException
がスローされます。
このタイプのチャネルは複数の並行スレッドで安全に使用できますが、最大で 1 つの受け付け操作が常に未処理になる可能性があります。前の受け付け操作が終了する前にスレッドが受け付け操作を開始すると、AcceptPendingException
がスローされます。
ソケットオプションは setOption
メソッドを使用して構成されます。このタイプのチャネルでは次のオプションがサポートされます。
追加 (実装固有) のオプションをサポートできる場合もあります。
オプション名 説明 SO_RCVBUF
ソケット受信バッファーのサイズ SO_REUSEADDR
アドレスを再利用します
使用例:
final AsynchronousServerSocketChannel listener = AsynchronousServerSocketChannel.open().bind(new InetSocketAddress(5000)); listener.accept(null, new CompletionHandler<AsynchronousSocketChannel,Void>() { public void completed(AsynchronousSocketChannel ch, Void att) { // accept the next connection listener.accept(null, this); // handle this connection handle(ch); } public void failed(Throwable exc, Void att) { ... } });
修飾子 | コンストラクタと説明 |
---|---|
protected |
AsynchronousServerSocketChannel(AsynchronousChannelProvider provider)
このクラスの新しいインスタンスを初期化します。
|
修飾子と型 | メソッドと説明 |
---|---|
abstract Future<AsynchronousSocketChannel> |
accept()
接続を受け入れます。
|
abstract <A> void |
accept(A attachment, CompletionHandler<AsynchronousSocketChannel,? super A> handler)
接続を受け入れます。
|
AsynchronousServerSocketChannel |
bind(SocketAddress local)
チャネルのソケットをローカルアドレスにバインドし、接続を待機するようソケットを構成します。
|
abstract AsynchronousServerSocketChannel |
bind(SocketAddress local, int backlog)
チャネルのソケットをローカルアドレスにバインドし、接続を待機するようソケットを構成します。
|
static AsynchronousServerSocketChannel |
open()
非同期のサーバーソケットチャネルを開きます。
|
static AsynchronousServerSocketChannel |
open(AsynchronousChannelGroup group)
非同期のサーバーソケットチャネルを開きます。
|
AsynchronousChannelProvider |
provider()
このチャネルの作成元プロバイダを返します。
|
abstract <T> AsynchronousServerSocketChannel |
setOption(SocketOption<T> name, T value)
ソケットオプションの値を設定します。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
close
getLocalAddress, getOption, supportedOptions
protected AsynchronousServerSocketChannel(AsynchronousChannelProvider provider)
public final AsynchronousChannelProvider provider()
public static AsynchronousServerSocketChannel open(AsynchronousChannelGroup group) throws IOException
指定したグループを作成した AsynchronousChannelProvider
オブジェクトで openAsynchronousServerSocketChannel
メソッドを呼び出すことで、新しいチャネルが作成されます。group パラメータが null の場合、結果のチャネルは、システム全体のデフォルトプロバイダによって作成され、デフォルトグループにバインドされます。
group
- 新たに構築されたチャネルのバインド先のグループ、またはデフォルトグループの場合は nullShutdownChannelGroupException
- チャネルグループがシャットダウンしている場合IOException
- 入出力エラーが発生した場合public static AsynchronousServerSocketChannel open() throws IOException
このメソッドは、デフォルトグループにバインドされた非同期のサーバーソケットチャネルを返します。このメソッドの呼び出しは次の式の評価と等価です。
open((AsynchronousChannelGroup)null);
IOException
- 入出力エラーが発生した場合public final AsynchronousServerSocketChannel bind(SocketAddress local) throws IOException
このメソッドの呼び出しは次と同等です。
bind(local, 0);
bind
、インタフェース: NetworkChannel
local
- ソケットのバインド先のローカルアドレス、または自動的に割り当てられるソケットアドレスにバインドする場合は nullAlreadyBoundException
- ソケットがすでにバインドされている場合UnsupportedAddressTypeException
- 指定されたアドレスのタイプがサポート対象外の場合SecurityException
- セキュリティーマネージャーがインストールされ、それが未指定のアクセス権を拒否する場合。このインタフェースの実装は、必要なアクセス権を指定するべきです。ClosedChannelException
- チャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合NetworkChannel.getLocalAddress()
public abstract AsynchronousServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
このメソッドは、ソケットとローカルアドレスとの間の関連付けを確立するために使用されます。関連付けが確立されると、ソケットは関連するチャネルが閉じられるまでバインドされたままになります。
backlog
パラメータは、ソケットの保留されている接続の最大数です。正確なセマンティクスは実装に固有です。たとえば、実装が最大長を規定していたり、パラメータをまったく無視したりする場合があります。backlog
パラメータの値が 0
または負の値の場合、実装固有のデフォルトが使用されます。
local
- ソケットのバインド先のローカルアドレス、または自動的に割り当てられるソケットアドレスにバインドする場合は null
backlog
- 保留されている接続の最大数。AlreadyBoundException
- ソケットがすでにバインドされている場合UnsupportedAddressTypeException
- 指定されたアドレスのタイプがサポート対象外の場合SecurityException
- セキュリティーマネージャーがインストールされていて、その checkListen
メソッドが操作を拒否した場合ClosedChannelException
- チャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合public abstract <T> AsynchronousServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException
NetworkChannel
setOption
、インタフェース: NetworkChannel
name
- ソケットオプションvalue
- ソケットオプションの値。一部のソケットオプションに対しては、null
の値が有効な値である場合があります。IllegalArgumentException
- 値がこのソケットオプションに対して有効な値でない場合ClosedChannelException
- このチャネルがクローズしている場合IOException
- 入出力エラーが発生した場合StandardSocketOptions
public abstract <A> void accept(A attachment, CompletionHandler<AsynchronousSocketChannel,? super A> handler)
このメソッドは、このチャネルのソケットに対する接続を受け付けるための非同期操作を開始します。handler
パラメータは、接続が受け付けられた (または操作が失敗した) ときに呼び出される終了ハンドラです。終了ハンドラに渡される結果は、新しい接続への AsynchronousSocketChannel
です。
新しい接続が受け付けられると、結果の AsynchronousSocketChannel
は、このチャネルと同じ AsynchronousChannelGroup
にバインドされます。グループがシャットダウン
している場合に接続が受け付けられると、接続は閉じられ、操作は IOException
で終了して、ShutdownChannelGroupException
がスローされます。
新しい接続の並行処理を可能にするために、新しい接続がすぐに受け付けられたときに、終了ハンドラは開始スレッドによって直接呼び出されません (「スレッド」を参照)。
セキュリティーマネージャーがインストールされている場合、接続のリモートエンドポイントのアドレスとポート番号がセキュリティーマネージャーの checkAccept
メソッドによって許可されていることが検証されます。アクセス権のチェックは、このメソッドの呼び出し側コンテキストによって制限される権限を使用して実行されます。アクセス権のチェックが失敗した場合、接続は閉じられ、操作は SecurityException
で終了します。
attachment
- 入出力操作に接続されるオブジェクト。null
も可handler
- 結果を消費するためのハンドラAcceptPendingException
- このチャネルで受け付け操作がすでに進行中である場合NotYetBoundException
- このチャネルのソケットが未バインドの場合ShutdownChannelGroupException
- チャネルグループが終了している場合public abstract Future<AsynchronousSocketChannel> accept()
このメソッドは、このチャネルのソケットに対する接続を受け付けるための非同期操作を開始します。このメソッドは、accept(Object, CompletionHandler)
メソッドとまったく同じように動作します。ただし、終了ハンドラを指定する代わりに、このメソッドは保留状態の結果を表す Future
を返します。Future
の get
メソッドは、正常に完了すると新しい接続への AsynchronousSocketChannel
を返します。
Future
オブジェクトAcceptPendingException
- このチャネルで受け付け操作がすでに進行中である場合NotYetBoundException
- このチャネルのソケットが未バインドの場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.