- すべての実装されたインタフェース:
Closeable,AutoCloseable,Channel,InterruptibleChannel
SCTPチャネルは、1つのSCTPアソシエーションのみを制御できます。 このクラスのいずれかのopenメソッドを呼び出すと、SCTPChannelが作成されます。 新しく作成されたチャネルはオープンですが、接続は確立されていません。つまり、リモート・ピアとのアソシエーション設定はありません。 未接続のチャネルに対して入出力操作を呼び出そうとすると、NotYetConnectedExceptionがスローされます。 アソシエーションを設定するには、いずれかのconnectメソッドを使用してチャネルを接続します。 接続されたチャネルは、クローズされるまで接続されたままになります。 チャネルが接続されているかどうかは、getRemoteAddressesの呼出しによって判断できます。
SCTPチャネルは非ブロック接続をサポートします。チャネルの作成とリモート・ソケットへのリンクを確立するプロセスの開始はconnectメソッドによって行われ、後でfinishConnectメソッドによって完了します。 接続操作が実行中であるかどうかは、isConnectionPendingメソッドの呼出しによって判断できます。
ソケット・オプションはsetOptionメソッドを使用して構成されます。 SCTPチャネルでは次のオプションがサポートされます。
追加(実装固有)のオプションをサポートできる場合もあります。
オプション名 説明 SCTP_DISABLE_FRAGMENTSメッセージの断片化を有効または無効にします SCTP_EXPLICIT_COMPLETE明示的なメッセージの完了を有効または無効にします SCTP_FRAGMENT_INTERLEAVEメッセージ受信者に対するメッセージの表現方法を制御します SCTP_INIT_MAXSTREAMSアソシエーションの初期化中にローカル・エンドポイントで要求されたストリームの最大数 SCTP_NODELAYNagleに似たアルゴリズムを有効または無効にします SCTP_PRIMARY_ADDRローカルSCTPスタックで、指定されたピア・アドレスがアソシエーション・プライマリとして使用されるように要求します SCTP_SET_PEER_PRIMARY_ADDR囲まれたアドレスがピアによってアソシエーション・プライマリとしてマークされるように要求します SO_SNDBUFソケット送信バッファのサイズ SO_RCVBUFソケット受信バッファのサイズ SO_LINGER閉じるときにデータが存在する場合は遅延します(ブロック・モードに構成されている場合のみ)
supportedOptionsメソッドを呼び出すと、サポートされているオプションのリストが取得されます。
SCTPチャネルは、複数の並行スレッドで安全に使用できます。 データグラム・チャネルは並行読取りおよび書込みをサポートします。ただし、読取りを行うスレッドも書込みを行うスレッドも特定の時点では常に1個以下です。 connectメソッドとfinishConnectメソッドは相互に同期しており、いずれかのメソッドの呼出し中に送信または受信操作を開始しようとすると、この処理はその呼出しが完了するまでブロックされます。
- 導入されたバージョン:
- 1.7
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明abstract Associationこのチャネルのソケット上のアソシエーションを返します。abstract SctpChannelbind(SocketAddress local) チャネルのソケットをローカル・アドレスにバインドします。abstract SctpChannelbindAddress(InetAddress address) 指定されたアドレスをチャネルのソケットにバインドされているアドレスに追加します。abstract booleanconnect(SocketAddress remote) このチャネルのソケットを接続します。abstract booleanconnect(SocketAddress remote, int maxOutStreams, int maxInStreams) このチャネルのソケットを接続します。abstract booleanSCTPチャネルの接続処理を完了します。abstract Set<SocketAddress> このチャネルのソケットがバインドされているすべてのソケット・アドレスを返します。abstract <T> TgetOption(SctpSocketOption<T> name) ソケット・オプションの値を返します。abstract Set<SocketAddress> このチャネルのソケットが接続されているすべてのリモート・アドレスを返します。abstract booleanこのチャネル上で接続操作が進行中かどうかを判断します。static SctpChannelopen()SCTPチャネルを開きます。static SctpChannelopen(SocketAddress remote, int maxOutStreams, int maxInStreams) SCTPチャネルを開き、リモート・アドレスに接続します。abstract <T> MessageInforeceive(ByteBuffer dst, T attachment, NotificationHandler<T> handler) 指定されたバッファへのメッセージを受信するか、通知を処理します(あるいはその両方を行います)。abstract intsend(ByteBuffer src, MessageInfo messageInfo) このチャネル経由でメッセージを送信します。abstract <T> SctpChannelsetOption(SctpSocketOption<T> name, T value) ソケット・オプションの値を設定します。abstract SctpChannelshutdown()チャネルを閉じずに接続を停止します。abstract Set<SctpSocketOption<?>> このチャネルがサポートするソケット・オプションのセットを返します。abstract SctpChannelunbindAddress(InetAddress address) 指定されたアドレスをチャネルのソケットにバインドされているアドレスから削除します。final intvalidOps()このチャネルのサポートされている操作を識別する操作セットを返します。クラスjava.nio.channels.spi.AbstractSelectableChannelで宣言されたメソッド
blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, registerクラスjava.nio.channels.SelectableChannelで宣言されたメソッド
registerクラスjava.nio.channels.spi.AbstractInterruptibleChannelで宣言されたメソッド
begin, close, end, isOpen
-
コンストラクタの詳細
-
SctpChannel
protected SctpChannel(SelectorProvider provider) このクラスの新しいインスタンスを初期化します。- パラメータ:
provider- このチャネルのセレクタ・プロバイダ
-
-
メソッドの詳細
-
open
public static SctpChannel open() throws IOExceptionSCTPチャネルを開きます。新しいチャネルは未バインドで未接続です。
- 戻り値:
- 新しいSCTPチャネル
- スロー:
UnsupportedOperationException- SCTPプロトコルがサポートされていない場合IOException- 入出力エラーが発生した場合
-
open
public static SctpChannel open(SocketAddress remote, int maxOutStreams, int maxInStreams) throws IOException SCTPチャネルを開き、リモート・アドレスに接続します。これは簡易メソッドであり、次の式の評価と等価です。
open().connect(remote, maxOutStreams, maxInStreams);
- パラメータ:
remote- 新しいチャネルの接続先リモート・アドレスmaxOutStreams- アプリケーションで送信できることを予定するストリームの数。65536以下の正の値にする必要があります(エンド・ポイントのデフォルト値を使用する場合は0)。maxInStreams- アプリケーションがサポートするように準備されるインバウンド・ストリームの最大数。65536以下の正の値にする必要があります(エンド・ポイントのデフォルト値を使用する場合は0)。- 戻り値:
- 指定されたアドレスに接続された、新しいSCTPチャネル
- スロー:
AsynchronousCloseException- 接続操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 接続操作の進行中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合UnresolvedAddressException- 指定されたリモート・アドレスが完全に解決されない場合UnsupportedAddressTypeException- 指定されたリモート・アドレスのタイプがサポート対象外の場合SecurityException- セキュリティ・マネージャがインストールされていて、指定されたリモート・ピアへのアクセスが許可されていない場合UnsupportedOperationException- SCTPプロトコルがサポートされていない場合IOException- その他の入出力エラーが発生した場合
-
association
public abstract Association association() throws IOExceptionこのチャネルのソケット上のアソシエーションを返します。- 戻り値:
- アソシエーション。チャネルのソケットが接続されていない場合は
null。 - スロー:
ClosedChannelException- チャネルがクローズしている場合IOException- その他の入出力エラーが発生した場合
-
bind
public abstract SctpChannel bind(SocketAddress local) throws IOException チャネルのソケットをローカル・アドレスにバインドします。このメソッドは、ソケットとローカル・アドレスとの間の関係を確立するために使用されます。 関係が確立されると、ソケットはチャネルが閉じられるまでバインドされたままになります。 この関係は
unbindAddressによって削除される可能性があるため、必ずしもアドレスlocalとの関係であるとはかぎりませんが、このメソッドの呼出しが正常に完了すれば、チャネルのソケットにバインドされたローカル・アドレスが必ず1つ以上存在します。チャネルのソケットが(自動的に割り当てられない)特定のアドレスに正常にバインドされると、追加のアドレスを
bindAddressを使用してバインドしたり、unbindAddressを使用して削除したりできます。- パラメータ:
local- ソケットのバインド先のローカル・アドレス、または自動的に割り当てられるソケット・アドレスにソケットをバインドする場合はnull- 戻り値:
- このチャネル
- スロー:
AlreadyConnectedException- このチャネルがすでに接続されている場合ClosedChannelException- このチャネルがクローズしている場合ConnectionPendingException- このチャネルですでに非ブロック接続操作が実行中である場合AlreadyBoundException- このチャネルがすでにバインドされている場合UnsupportedAddressTypeException- 指定されたアドレスのタイプがサポート対象外の場合IOException- その他の入出力エラーが発生した場合SecurityException- セキュリティ・マネージャがインストールされていて、checkListenメソッドが操作を拒否した場合
-
bindAddress
public abstract SctpChannel bindAddress(InetAddress address) throws IOException 指定されたアドレスをチャネルのソケットにバインドされているアドレスに追加します。指定されたアドレスは、
ワイルドカード・アドレスであってはいけません。 このメソッドを呼び出す前に、まずbindを使用してチャネルをバインドする必要があります。そうしないと、NotYetBoundExceptionがスローされます。bindメソッドは、引数としてSocketAddressを取ります。通常は、アドレスに加えてポート番号も含まれます。 チャネルの存続期間内はSCTPポート番号は同じままであるため、その後、このメソッドを使用してバインドされたアドレスにはアドレスのみが含まれます。接続されたアソシエーションにアドレスを追加することはオプションの機能です。 エンド・ポイントで動的なアドレス再構成がサポートされている場合は、ピア・アドレスのリストを変更するために、適切なメッセージがピアに送信されることがあります。
- パラメータ:
address- ソケットにバインドされたアドレスに追加されるアドレス- 戻り値:
- このチャネル
- スロー:
ClosedChannelException- このチャネルがクローズしている場合ConnectionPendingException- このチャネルですでに非ブロック接続操作が実行中である場合NotYetBoundException- このチャネルがまだバインドされていない場合AlreadyBoundException- このチャネルがすでに指定されたアドレスにバインドされている場合IllegalArgumentException- アドレスがnullまたはwildcardアドレスの場合IOException- その他の入出力エラーが発生した場合
-
unbindAddress
public abstract SctpChannel unbindAddress(InetAddress address) throws IOException 指定されたアドレスをチャネルのソケットにバインドされているアドレスから削除します。指定されたアドレスは、
ワイルドカード・アドレスであってはいけません。 このメソッドを呼び出す前に、まずbindを使用してチャネルをバインドする必要があります。そうしないと、NotYetBoundExceptionがスローされます。 バインドされたアドレスの1つとしてaddressが含まれないチャネルまたはバインドされているローカル・アドレスが1つしかないチャネルでこのメソッドが呼び出された場合はIllegalUnbindExceptionがスローされます。bindを使用してチャネルのソケットがバインドされる初期アドレスは、チャネルのソケットにバインドされたアドレスから削除される可能性があります。接続されたアソシエーションからアドレスを削除することはオプションの機能です。 エンド・ポイントで動的なアドレス再構成がサポートされている場合は、ピア・アドレスのリストを変更するために、適切なメッセージがピアに送信されることがあります。
- パラメータ:
address- ソケットにバインドされたアドレスから削除されるアドレス- 戻り値:
- このチャネル
- スロー:
ClosedChannelException- このチャネルがクローズしている場合ConnectionPendingException- このチャネルですでに非ブロック接続操作が実行中である場合NotYetBoundException- このチャネルがまだバインドされていない場合IllegalArgumentException- アドレスがnullまたはwildcardアドレスの場合IllegalUnbindException-addressがチャネルのソケットにバインドされていない場合、またはチャネルにバインドされたアドレスが1つのみである場合IOException- その他の入出力エラーが発生した場合
-
connect
public abstract boolean connect(SocketAddress remote) throws IOException このチャネルのソケットを接続します。このチャネルが非ブロック・モードの場合、このメソッドの呼出しにより、非ブロック接続操作が開始されます。 ローカル接続の場合のように即座に接続が確立される場合、このメソッドは
trueを返します。 それ以外の場合はfalseを返し、あとでfinishConnectメソッドを呼び出すことにより、接続操作を完了する必要があります。このチャネルがブロック・モードの場合、このメソッドの呼出しは、接続が確立されるか入出力エラーが発生するまでブロックされます。
セキュリティ・マネージャがインストールされている場合、このメソッドは、その
checkConnectメソッドが指定されたリモート・ピアのアドレスおよびポート番号への接続を許可することを確認します。このメソッドはいつでも呼び出すことができます。 このメソッドを呼び出している途中でこのチャネルに対する
sendまたはreceive操作を呼び出した場合、最初の呼出しが完了するまで次の呼出しはブロックされます。 接続しようとしたが失敗した場合、つまりこのメソッドの呼出しがチェック例外をスローする場合、チャネルはクローズされます。- パラメータ:
remote- このチャネルの接続先リモート・ピア- 戻り値:
- 接続が確立された場合は
true、このチャネルが非ブロック・モードで接続操作の実行中である場合はfalse - スロー:
AlreadyConnectedException- このチャネルがすでに接続されている場合ConnectionPendingException- このチャネルですでに非ブロック接続操作が実行中である場合ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 接続操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 接続操作の進行中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合UnresolvedAddressException- 指定されたリモート・アドレスが完全に解決されない場合UnsupportedAddressTypeException- 指定されたリモート・アドレスのタイプがサポート対象外の場合SecurityException- セキュリティ・マネージャがインストールされていて、指定されたリモート・ピアへのアクセスが許可されていない場合IOException- その他の入出力エラーが発生した場合
-
connect
public abstract boolean connect(SocketAddress remote, int maxOutStreams, int maxInStreams) throws IOException このチャネルのソケットを接続します。これは簡易メソッドであり、次の式の評価と等価です。
setOption(SctpStandardSocketOptions.SCTP_INIT_MAXSTREAMS, SctpStandardSocketOption.InitMaxStreams.create(maxInStreams, maxOutStreams)) .connect(remote);
maxOutStreamsおよびmaxInStreamsパラメータは、アプリケーションで送受信できることを予定するストリームの最大数を表します。 これらはリモート・ピアとネゴシエーションされますが、オペレーティング・システムにより制限されることがあります。- パラメータ:
remote- このチャネルの接続先リモート・ピアmaxOutStreams-65536以下の正の値にする必要があります(エンド・ポイントのデフォルト値を使用する場合は0)。maxInStreams-65536以下の正の値にする必要があります(エンド・ポイントのデフォルト値を使用する場合は0)。- 戻り値:
- 接続が確立された場合は
true、このチャネルが非ブロック・モードで接続操作の実行中である場合はfalse - スロー:
AlreadyConnectedException- このチャネルがすでに接続されている場合ConnectionPendingException- このチャネルですでに非ブロック接続操作が実行中である場合ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 接続操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 接続操作の進行中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合UnresolvedAddressException- 指定されたリモート・アドレスが完全に解決されない場合UnsupportedAddressTypeException- 指定されたリモート・アドレスのタイプがサポート対象外の場合SecurityException- セキュリティ・マネージャがインストールされていて、指定されたリモート・ピアへのアクセスが許可されていない場合IOException- その他の入出力エラーが発生した場合
-
isConnectionPending
public abstract boolean isConnectionPending()このチャネル上で接続操作が進行中かどうかを判断します。- 戻り値:
- このチャネル上で接続操作が開始されていて、
finishConnect()メソッドを呼び出すことによってまだ完了していない場合にかぎりtrue
-
finishConnect
public abstract boolean finishConnect() throws IOExceptionSCTPチャネルの接続処理を完了します。ソケット・チャネルを非ブロック・モードにし、その
connectメソッドの1つを呼び出すと、非ブロック接続操作が開始されます。 接続が確立されるか、接続に失敗したあと、チャネルは接続可能な状態になり、接続シーケンスを完了するために、このメソッドを呼び出すことができます。 接続操作に失敗した場合、このメソッドを呼び出すと適切なIOExceptionがスローされます。このチャネルがすでに接続されている場合、このメソッドはブロックされず、すぐに
trueを返します。 このチャネルが非ブロッキング・モードの場合、接続プロセスが完了していないと、このメソッドはfalseを返します。 このチャネルがブロッキング・モードの場合、このメソッドは、接続が完了するか失敗するまでブロックし、常にtrueを返すか、失敗を説明するチェック済の例外をスローします。このメソッドはいつでも呼び出すことができます。 このメソッドを呼び出している途中でこのチャネルに対する
sendまたはreceive操作を呼び出した場合、最初の呼出しが完了するまで次の呼出しはブロックされます。 接続しようとしたが失敗した場合、つまりこのメソッドの呼出しがチェック例外をスローする場合、チャネルはクローズされます。- 戻り値:
- このチャネルのソケットが接続されている場合にかぎり
true - スロー:
NoConnectionPendingException- このチャネルが接続されておらず、接続操作も開始されていない場合ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 接続操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 接続操作の進行中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException- その他の入出力エラーが発生した場合
-
getAllLocalAddresses
public abstract Set<SocketAddress> getAllLocalAddresses() throws IOExceptionこのチャネルのソケットがバインドされているすべてのソケット・アドレスを返します。- 戻り値:
- このチャネルのソケットがバインドされているすべてのソケット・アドレス、チャネルのソケットがバインドされていない場合は空の
Set - スロー:
ClosedChannelException- チャネルがクローズしている場合IOException- 入出力エラーが発生した場合
-
getRemoteAddresses
public abstract Set<SocketAddress> getRemoteAddresses() throws IOExceptionこのチャネルのソケットが接続されているすべてのリモート・アドレスを返します。チャネルが複数のアドレスにバインドされているリモート・ピアに接続する場合、これらのアドレスがチャネルのソケットが接続されるアドレスになります。
- 戻り値:
- このチャネルのソケットが接続されているすべてのリモート・アドレス、チャネルのソケットが接続されていない場合は空の
Set - スロー:
ClosedChannelException- チャネルがクローズしている場合IOException- 入出力エラーが発生した場合
-
shutdown
public abstract SctpChannel shutdown() throws IOExceptionチャネルを閉じずに接続を停止します。shutdownコマンドをリモート・ピアに送信することで、いずれかのピアによってあらゆる新しいデータがソケットに書き込まれることを事実上防ぎます。 さらに送信すると、
ClosedChannelExceptionがスローされます。 チャネルはオープンされたままであるため、shutdownコマンドの受信前にピアが送信した可能性のあるデータ(および通知)はすべて受信できます。 チャネルがすでに停止している状態でこのメソッドを呼び出しても、何の効果もありません。- 戻り値:
- このチャネル
- スロー:
NotYetConnectedException- このチャネルがまだ接続されていない場合ClosedChannelException- このチャネルがクローズしている場合IOException- その他の入出力エラーが発生した場合
-
getOption
public abstract <T> T getOption(SctpSocketOption<T> name) throws IOException ソケット・オプションの値を返します。- 型パラメータ:
T- ソケット・オプション値のタイプ- パラメータ:
name- ソケット・オプション- 戻り値:
- ソケット・オプションの値。 一部のソケット・オプションに対しては、
nullの値が有効な値である場合があります。 - スロー:
UnsupportedOperationException- チャネルがソケット・オプションをサポートしていない場合ClosedChannelException- このチャネルがクローズしている場合IOException- 入出力エラーが発生した場合- 関連項目:
-
setOption
public abstract <T> SctpChannel setOption(SctpSocketOption<T> name, T value) throws IOException ソケット・オプションの値を設定します。- 型パラメータ:
T- ソケット・オプション値のタイプ- パラメータ:
name- ソケット・オプションvalue- ソケット・オプションの値。 一部のソケット・オプションに対しては、nullの値が有効な値である場合があります。- 戻り値:
- このチャネル
- スロー:
UnsupportedOperationException- チャネルがソケット・オプションをサポートしていない場合IllegalArgumentException- 値がこのソケット・オプションに対して有効な値でない場合ClosedChannelException- このチャネルがクローズしている場合IOException- 入出力エラーが発生した場合- 関連項目:
-
supportedOptions
public abstract Set<SctpSocketOption<?>> supportedOptions()このチャネルがサポートするソケット・オプションのセットを返します。このメソッドは、チャネルが閉じられたあとでも引き続きオプションのセットを返します。
- 戻り値:
- このチャネルでサポートされるソケット・オプションのセット
-
validOps
public final int validOps()このチャネルのサポートされている操作を識別する操作セットを返します。SCTPチャネルは接続、読取りおよび書込みをサポートしているため、このメソッドは
(SelectionKey.OP_CONNECT|SelectionKey.OP_READ|SelectionKey.OP_WRITE)を返します。- 定義:
validOps、クラスSelectableChannel- 戻り値:
- 有効な操作セット
-
receive
public abstract <T> MessageInfo receive(ByteBuffer dst, T attachment, NotificationHandler<T> handler) throws IOException 指定されたバッファへのメッセージを受信するか、通知を処理します(あるいはその両方を行います)。メッセージまたは通知をすぐに使用できる場合、またはこのチャネルがブロック・モードで動作していて、最終的に使用可能になる場合は、そのメッセージが返されるか、通知が処理されます。 このチャネルが非ブロック・モードで動作していて、メッセージまたは通知をすぐに使用できない場合は、このメソッドはただちに
nullを返します。このメソッドがメッセージを受け取ると、そのメッセージは指定されたbyteバッファにコピーされます。 メッセージは指定されたbyteバッファの現在位置に転送され、バッファの位置は読み取られたバイト数だけ増分されます。 バッファ内に残っているバイト数がメッセージの格納に必要なバイト数より少ない場合や、基本となる入力バッファに完全なメッセージが含まれていない場合は、返された
MessageInfoでisCompleteを呼び出すとfalseが返されます。メッセージを完全に処理するには、このメソッドをさらに呼び出す必要があります。 どのストリームでも、一度に1つのメッセージが部分的に配信されるのみです。 ソケット・オプションSCTP_FRAGMENT_INTERLEAVEは、メッセージのインタレースが発生する様々な側面を制御します。このメソッドが通知を受信した場合は、指定されたハンドラの適切なメソッド(存在する場合)が呼び出されます。 ハンドラで
CONTINUEが返された場合、このメソッドは別のメッセージまたは通知を受信しようとします。RETURNが返された場合、このメソッドはnullを返します。 ハンドラでキャッチされない例外がスローされた場合は、その例外がこのメソッドからスタックまで伝播されます。このメソッドはいつでも呼び出すことができます。 別のスレッドがこのチャネルに対して受信操作をすでに開始している場合、このメソッドの呼出しは最初の操作が終わるまでブロックされます。 前述の同期ポリシーを強制するために使用されるロックを保持せずに、指定されたハンドラが呼び出された場合は、ハンドラによる他のスレッドの受信が停止されません。 ハンドラは、このチャネルの
receiveメソッドを呼び出すことはできません。呼び出した場合は、IllegalReceiveExceptionがスローされます。- 型パラメータ:
T- 接続の型- パラメータ:
dst- メッセージのバイトの転送先バッファattachment- 受信操作に接続されるオブジェクト。nullも可handler- SCTPスタックからの通知を処理するハンドラ、通知を無視する場合はnull。- 戻り値:
MessageInfo、このチャネルが非ブロック・モードで動作していて、メッセージがすぐに使用できない場合、または通知が処理されたあとに通知ハンドラがRETURNを返した場合はnull- スロー:
ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合NotYetConnectedException- このチャネルがまだ接続されていない場合IllegalReceiveException- 指定されたハンドラでこのチャネルのreceiveメソッドが呼び出される場合IOException- その他の入出力エラーが発生した場合
-
send
public abstract int send(ByteBuffer src, MessageInfo messageInfo) throws IOException このチャネル経由でメッセージを送信します。チャネルの動作モードが非ブロック・モードで基になる出力バッファの容量が十分である場合や、動作モードがブロック・モードで十分な容量がある場合、指定されたbyteバッファ内に残っているバイトは単一のメッセージとして転送されます。 このチャネルのソケットで明示的なメッセージの完了
SCTP_EXPLICIT_COMPLETEソケット・オプションが有効になっていなければ、メッセージの送信はアトミックです。メッセージは、通常の
write操作を実行した場合と同様に、byteバッファから転送されます。バイトは、指定された
messageInfoのstreamNumberで指定されているストリーム番号に書き込まれます。このメソッドはいつでも呼び出すことができます。 別のスレッドがこのチャネルに対して送信操作をすでに開始している場合、このメソッドの呼出しは最初の操作が終わるまでブロックされます。
- パラメータ:
src- 送信されるメッセージを含むバッファmessageInfo- 送信されるメッセージに関する補助データ- 戻り値:
- 送信バイト数(このメソッドを呼び出したときにメッセージ・バッファ内に残っていたバイト数)。このチャネルが非ブロック・モードで動作しており、基準となる出力バッファの容量が不十分なためメッセージが収まりきらない場合はゼロ
- スロー:
InvalidStreamException-streamNumnerが負の値である場合、またはそれが出力ストリームの最大数に等しいか、それよりも大きい場合ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合NotYetConnectedException- このチャネルがまだ接続されていない場合IOException- その他の入出力エラーが発生した場合
-