- すべての実装されたインタフェース:
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_NODELAY
Nagleに似たアルゴリズムを有効または無効にします 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 SctpChannel
bind
(SocketAddress local) チャネルのソケットをローカル・アドレスにバインドします。abstract SctpChannel
bindAddress
(InetAddress address) 指定されたアドレスをチャネルのソケットにバインドされているアドレスに追加します。abstract boolean
connect
(SocketAddress remote) このチャネルのソケットを接続します。abstract boolean
connect
(SocketAddress remote, int maxOutStreams, int maxInStreams) このチャネルのソケットを接続します。abstract boolean
SCTPチャネルの接続処理を完了します。abstract Set<SocketAddress>
このチャネルのソケットがバインドされているすべてのソケット・アドレスを返します。abstract <T> T
getOption
(SctpSocketOption<T> name) ソケット・オプションの値を返します。abstract Set<SocketAddress>
このチャネルのソケットが接続されているすべてのリモート・アドレスを返します。abstract boolean
このチャネル上で接続操作が進行中かどうかを判断します。static SctpChannel
open()
SCTPチャネルを開きます。static SctpChannel
open
(SocketAddress remote, int maxOutStreams, int maxInStreams) SCTPチャネルを開き、リモート・アドレスに接続します。abstract <T> MessageInfo
receive
(ByteBuffer dst, T attachment, NotificationHandler<T> handler) 指定されたバッファへのメッセージを受信するか、通知を処理します(あるいはその両方を行います)。abstract int
send
(ByteBuffer src, MessageInfo messageInfo) このチャネル経由でメッセージを送信します。abstract <T> SctpChannel
setOption
(SctpSocketOption<T> name, T value) ソケット・オプションの値を設定します。abstract SctpChannel
shutdown()
チャネルを閉じずに接続を停止します。abstract Set<SctpSocketOption<?>>
このチャネルがサポートするソケット・オプションのセットを返します。abstract SctpChannel
unbindAddress
(InetAddress address) 指定されたアドレスをチャネルのソケットにバインドされているアドレスから削除します。final int
validOps()
このチャネルのサポートされている操作を識別する操作セットを返します。クラス 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
- その他の入出力エラーが発生した場合
-