- java.lang.Object
-
- java.nio.channels.AsynchronousServerSocketChannel
-
- すべての実装されたインタフェース:
Closeable
,AutoCloseable
,AsynchronousChannel
,Channel
,NetworkChannel
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) { ... } });
- 導入されたバージョン:
- 1.7
-
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 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)
チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。abstract SocketAddress
getLocalAddress()
このチャネルのソケットがバインドされているソケット・アドレスを返します。static AsynchronousServerSocketChannel
open()
非同期のサーバー・ソケット・チャネルを開きます。static AsynchronousServerSocketChannel
open(AsynchronousChannelGroup group)
非同期のサーバー・ソケット・チャネルを開きます。AsynchronousChannelProvider
provider()
このチャネルの作成元プロバイダを返します。abstract <T> AsynchronousServerSocketChannel
setOption(SocketOption<T> name, T value)
ソケット・オプションの値を設定します。-
クラス java.lang.Objectで宣言されたメソッド
clone、equals、finalize、getClass、hashCode、notify、notifyAll、toString、wait、wait、wait
-
インタフェース java.nio.channels.AsynchronousChannelで宣言されたメソッド
close
-
インタフェース java.nio.channels.NetworkChannelで宣言されたメソッド
getOption, supportedOptions
-
-
-
-
コンストラクタの詳細
-
AsynchronousServerSocketChannel
protected AsynchronousServerSocketChannel(AsynchronousChannelProvider provider)
このクラスの新しいインスタンスを初期化します。- パラメータ:
provider
- このチャネルの作成元プロバイダ
-
-
メソッドの詳細
-
provider
public final AsynchronousChannelProvider provider()
このチャネルの作成元プロバイダを返します。- 戻り値:
- このチャネルの作成元プロバイダ
-
open
public static AsynchronousServerSocketChannel open(AsynchronousChannelGroup group) throws IOException
非同期のサーバー・ソケット・チャネルを開きます。指定したグループを作成した
AsynchronousChannelProvider
オブジェクトでopenAsynchronousServerSocketChannel
メソッドを呼び出すことで、新しいチャネルが作成されます。 groupパラメータがnull
の場合、結果のチャネルは、システム全体のデフォルト・プロバイダによって作成され、デフォルト・グループにバインドされます。- パラメータ:
group
- 新たに構築されたチャネルのバインド先のグループ、またはデフォルト・グループの場合はnull
- 戻り値:
- 新しい非同期サーバー・ソケット・チャネル
- 例外:
ShutdownChannelGroupException
- チャネル・グループがシャットダウンしている場合IOException
- 入出力エラーが発生した場合
-
open
public static AsynchronousServerSocketChannel open() throws IOException
非同期のサーバー・ソケット・チャネルを開きます。このメソッドは、デフォルト・グループにバインドされた非同期のサーバー・ソケット・チャネルを返します。 このメソッドの呼出しは次の式の評価と等価です。
open((AsynchronousChannelGroup)null);
- 戻り値:
- 新しい非同期サーバー・ソケット・チャネル
- 例外:
IOException
- 入出力エラーが発生した場合
-
bind
public final AsynchronousServerSocketChannel bind(SocketAddress local) throws IOException
チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。このメソッドの呼出しは次と同等です。
bind(local, 0);
- 定義:
bind
、インタフェース:NetworkChannel
- パラメータ:
local
- ソケットのバインド先のローカル・アドレス、または自動的に割り当てられるソケット・アドレスにバインドする場合はnull
- 戻り値:
- このチャネル
- 例外:
AlreadyBoundException
- ソケットがすでにバインドされている場合UnsupportedAddressTypeException
- 指定されたアドレスのタイプがサポート対象外の場合SecurityException
- セキュリティ・マネージャがインストールされ、それが未指定のアクセス権を拒否する場合。 このインタフェースの実装は、必要なアクセス権を指定するべきです。ClosedChannelException
- チャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合- 関連項目:
NetworkChannel.getLocalAddress()
-
bind
public abstract AsynchronousServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。このメソッドは、ソケットとローカル・アドレスとの間の関連付けを確立するために使用されます。 関連付けが確立されると、ソケットは関連するチャネルが閉じられるまでバインドされたままになります。
backlog
パラメータは、ソケットの保留されている接続の最大数です。 正確なセマンティックスは実装に固有です。 たとえば、実装が最大長を規定していたり、パラメータをまったく無視したりする場合があります。backlog
パラメータの値が0
または負の値の場合、実装固有のデフォルトが使用されます。- パラメータ:
local
- ソケットのバインド先のローカル・アドレス、または自動的に割り当てられるソケット・アドレスにバインドする場合はnull
backlog
- 保留されている接続の最大数。- 戻り値:
- このチャネル
- 例外:
AlreadyBoundException
- ソケットがすでにバインドされている場合UnsupportedAddressTypeException
- 指定されたアドレスのタイプがサポート対象外の場合SecurityException
- セキュリティ・マネージャがインストールされていて、checkListen
メソッドが操作を拒否した場合ClosedChannelException
- チャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合
-
setOption
public abstract <T> AsynchronousServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException
インタフェースからコピーされた説明:NetworkChannel
ソケット・オプションの値を設定します。- 定義:
setOption
、インタフェース:NetworkChannel
- 型パラメータ:
T
- ソケット・オプション値のタイプ- パラメータ:
name
- ソケット・オプションvalue
- ソケット・オプションの値。 一部のソケット・オプションに対しては、null
の値が有効な値である場合があります。- 戻り値:
- このチャネル
- 例外:
IllegalArgumentException
- 値がこのソケット・オプションに対して有効な値でない場合ClosedChannelException
- このチャネルがクローズしている場合IOException
- 入出力エラーが発生した場合- 関連項目:
StandardSocketOptions
-
accept
public abstract <A> void accept(A attachment, CompletionHandler<AsynchronousSocketChannel,? super A> handler)
接続を受け入れます。このメソッドは、このチャネルのソケットに対する接続を受け付けるための非同期操作を開始します。
handler
パラメータは、接続が受け付けられた(または操作が失敗した)ときに呼び出される終了ハンドラです。 終了ハンドラに渡される結果は、新しい接続へのAsynchronousSocketChannel
です。新しい接続が受け付けられると、結果の
AsynchronousSocketChannel
は、このチャネルと同じAsynchronousChannelGroup
にバインドされます。 グループがシャットダウン
している場合に接続が受け付けられると、接続は閉じられ、操作はIOException
で終了して、ShutdownChannelGroupException
がスローされます。新しい接続の並行処理を可能にするために、新しい接続がすぐに受け付けられたときに、終了ハンドラは開始スレッドによって直接呼び出されません(「スレッド」を参照)。
セキュリティ・マネージャがインストールされている場合、接続のリモート・エンドポイントのアドレスとポート番号がセキュリティ・マネージャの
checkAccept
メソッドによって許可されていることが検証されます。 アクセス権のチェックは、このメソッドの呼出し側コンテキストによって制限される権限を使用して実行されます。 アクセス権のチェックが失敗した場合、接続は閉じられ、操作はSecurityException
で終了します。- 型パラメータ:
A
- 接続のタイプ- パラメータ:
attachment
- 入出力操作に接続されるオブジェクト。null
も可handler
- 結果を消費するためのハンドラ- 例外:
AcceptPendingException
- このチャネルで受け付け操作がすでに進行中である場合NotYetBoundException
- このチャネルのソケットが未バインドの場合ShutdownChannelGroupException
- チャネル・グループが終了している場合
-
accept
public abstract Future<AsynchronousSocketChannel> accept()
接続を受け入れます。このメソッドは、このチャネルのソケットに対する接続を受け付けるための非同期操作を開始します。 このメソッドは、
accept(Object, CompletionHandler)
メソッドとまったく同じように動作します。ただし、終了ハンドラを指定するかわりに、このメソッドは保留状態の結果を表すFuture
を返します。Future
のget
メソッドは、正常に完了すると新しい接続へのAsynchronousSocketChannel
を返します。- 戻り値:
- 保留されている結果を表す
Future
オブジェクト - 例外:
AcceptPendingException
- このチャネルで受け付け操作がすでに進行中である場合NotYetBoundException
- このチャネルのソケットが未バインドの場合
-
getLocalAddress
public abstract SocketAddress getLocalAddress() throws IOException
このチャネルのソケットがバインドされているソケット・アドレスを返します。チャネルがInternet Protocolソケット・アドレスに
バインド
されている場合は、このメソッドからの戻り値の型はInetSocketAddress
です。セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャの
checkConnect
メソッドがローカル・アドレスおよび-1
を引数として呼び出され、操作が許可されるかどうかが確認されます。 この操作が許可されない場合は、ループバック
・アドレスおよびチャネルのソケットのローカル・ポートを表すSocketAddress
が返されます。- 定義:
getLocalAddress
、インタフェース:NetworkChannel
- 戻り値:
- ソケットがバインドされている
SocketAddress
、またはセキュリティ・マネージャによって拒否された場合はループバック・アドレスを表すSocketAddress
、またはチャネルのソケットがバインドされていない場合はnull
- 例外:
ClosedChannelException
- チャネルがクローズしている場合IOException
- 入出力エラーが発生した場合
-
-