モジュール java.base
パッケージ java.nio.channels

クラスAsynchronousSocketChannel

java.lang.Object
java.nio.channels.AsynchronousSocketChannel
すべての実装されたインタフェース:
Closeable, AutoCloseable, AsynchronousByteChannel, AsynchronousChannel, Channel, NetworkChannel

public abstract class AsynchronousSocketChannel extends Object implements AsynchronousByteChannel, NetworkChannel
ストリーム型接続ソケット用の非同期チャネルです。

非同期ソケット・チャネルは、2つの方法のうちのいずれかで作成されます。 新しく作成されたAsynchronousSocketChannelは、このクラスによって定義されたopenメソッドの1つを呼び出すことで作成されます。 新しく作成されたチャネルはオープンですが、接続は確立されていません。 AsynchronousServerSocketChannelのソケットへの接続が確立されると、接続されたAsynchronousSocketChannelが作成されます。 任意の既存のsocketの非同期ソケット・チャネルを作成することはできません。

新しく作成されたチャネルは、そのconnectメソッドを呼び出すことで接続されます。接続後、チャネルは閉じられるまで接続されたままになります。 ソケット・チャネルが接続されているかどうかは、getRemoteAddressメソッドの呼出しによって判断できます。 未接続のチャネルに対して入力操作を呼び出そうとすると、NotYetConnectedExceptionがスローされます。

この型のチャネルは、複数のスレッドで並行して使用できます。 並行読み取りおよび書込みがサポートされますが、最大で1つの読取り操作と1つの書込み操作が常に未処理になる可能性があります。 前の読取り操作が終了する前にスレッドが読取り操作を開始すると、ReadPendingExceptionがスローされます。 同様に、前の書込みが終了する前に書込み操作を開始しようとすると、WritePendingExceptionがスローされます。

ソケット・オプションはsetOptionメソッドを使用して構成されます。 非同期ソケット・チャネルでは次のオプションがサポートされます。

ソケット・オプション
オプション名 説明
SO_SNDBUF ソケット送信バッファのサイズ
SO_RCVBUF ソケット受信バッファのサイズ
SO_KEEPALIVE 接続をキープアライブにします
SO_REUSEADDR アドレスを再利用します
TCP_NODELAY Nagleアルゴリズムを無効にします
追加(実装固有)のオプションをサポートできる場合もあります。

タイムアウト

このクラスによって定義されるreadメソッドとwriteメソッドを使用すると、読取りまたは書込み操作の開始時にタイム・アウトを指定できます。 操作が終了する前にタイム・アウトが経過した場合は、操作は例外InterruptedByTimeoutExceptionで終了します。 タイム・アウトによって、チャネルまたは基本となる接続が整合性のない状態のままになることがあります。 バイトがチャネルから読み取られていないことを実装で保証できない場合、チャネルは実装に固有のエラー状態になります。 そのあとでread操作を開始しようとすると、未指定のランタイム例外がスローされます。 同様に、write操作がタイム・アウトになり、バイトがチャネルに書き込まれていないことを実装で保証できない場合、チャネルへのwriteをさらに試行すると、未指定のランタイム例外がスローされます。 タイム・アウトが経過すると、入出力操作のByteBufferの状態またはバッファ・シーケンスは定義されません。 バッファは破棄するか、少なくともチャネルが開いたままになっている間はバッファへのアクセスが行われないように注意する必要があります。 timeoutパラメータを受け入れるすべてのメソッドで、ゼロ以下の値を、入出力操作がタイム・アウトにならないものとして扱います。

導入されたバージョン:
1.7