モジュール jdk.sctp
パッケージ com.sun.nio.sctp

クラスSctpServerChannel

すべての実装されたインタフェース:
Closeable, AutoCloseable, Channel, InterruptibleChannel

public abstract class SctpServerChannel
extends AbstractSelectableChannel
メッセージ指向の待機SCTPソケットの選択可能なチャネルです。

このクラスのopenメソッドを呼び出すと、SCTPServerChannelが作成されます。 新しく作成されたSCTPサーバー・チャネルはオープンですが、未バインドです。 バインドされていないチャネルのacceptメソッドを呼び出そうとすると、NotYetBoundExceptionがスローされます。 SCTPサーバー・チャネルは、このクラスによって定義されるbindメソッドの1つを呼び出すことによってバインドできます。

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

ソケット・オプション
オプション名 説明
SCTP_INIT_MAXSTREAMS アソシエーションの初期化中にローカル・エンドポイントで要求されたストリームの最大数
追加(実装固有)のオプションをサポートできる場合もあります。 supportedOptionsメソッドを呼び出すと、サポートされているオプションのリストが取得されます。

SCTPサーバー・チャネルは、複数の並行スレッドで安全に使用できます。

導入されたバージョン:
1.7
  • コンストラクタの詳細

    • SctpServerChannel

      protected SctpServerChannel​(SelectorProvider provider)
      このクラスの新しいインスタンスを初期化します。
      パラメータ:
      provider - このチャネルのセレクタ・プロバイダ
  • メソッドの詳細

    • open

      public static SctpServerChannel open() throws IOException
      SCTPサーバー・チャネルを開きます。

      新しいチャネルのソケットは、初期状態では未バインドです。ソケットのbindメソッドの1つを使って特定のアドレスにバインドしないと、アソシエーションは受け付けられません。

      戻り値:
      新しいSCTPサーバー・チャネル
      例外:
      UnsupportedOperationException - SCTPプロトコルがサポートされていない場合
      IOException - 入出力エラーが発生した場合
    • accept

      public abstract SctpChannel accept() throws IOException
      このチャネルのソケット上のアソシエーションを受け入れます。

      このチャネルが非ブロック・モードの場合、保留されているアソシエーションがなければ、このメソッドはただちにnullを返します。 それ以外の場合、新しいアソシエーションが利用可能になるか、入出力エラーが発生するまで無期限にブロックされます。

      このメソッドによって返されるSCTPChannelは、このチャネルがブロック・モードであってもそうでなくてもブロック・モードになります。

      セキュリティ・マネージャがインストールされている場合、このメソッドは新しい各アソシエーションについてアソシエーションのリモート・ピアのアドレスおよびポート番号がセキュリティ・マネージャのcheckAcceptメソッドによって許可されていることを確認します。

      戻り値:
      新しいアソシエーションのSCTPチャネル。このチャネルが非ブロック・モードで、受け付け可能なアソシエーションが存在しない場合はnull
      例外:
      ClosedChannelException - このチャネルがクローズしている場合
      AsynchronousCloseException - 受け付け操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
      ClosedByInterruptException - 受け付け操作の進行中に、現在のスレッドに対して別のスレッドから割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合
      NotYetBoundException - このチャネルのソケットが未バインドの場合
      SecurityException - セキュリティ・マネージャがインストールされていて、新しいアソシエーションのリモート・ピアへのアクセスが許可されていない場合
      IOException - その他の入出力エラーが発生した場合
    • bind

      public final SctpServerChannel bind​(SocketAddress local) throws IOException
      チャネルのソケットをローカル・アドレスにバインドし、アソシエーションを待機するようソケットを構成します。

      このメソッドの呼出しは、式を評価することと同様に動作します。

       bind(local, 0);
       

      パラメータ:
      local - ソケットのバインド先のローカル・アドレス、または自動的に割り当てられるソケット・アドレスにソケットをバインドする場合はnull
      戻り値:
      このチャネル
      例外:
      ClosedChannelException - このチャネルがクローズしている場合
      AlreadyBoundException - このチャネルがすでにバインドされている場合
      UnsupportedAddressTypeException - 指定されたアドレスのタイプがサポート対象外の場合
      SecurityException - セキュリティ・マネージャがインストールされていて、checkListenメソッドが操作を拒否した場合
      IOException - その他の入出力エラーが発生した場合
    • bind

      public abstract SctpServerChannel bind​(SocketAddress local, int backlog) throws IOException
      チャネルのソケットをローカル・アドレスにバインドし、アソシエーションを待機するようソケットを構成します。

      このメソッドは、ソケットとローカル・アドレスとの間の関係を確立するために使用されます。 関係が確立されると、ソケットはチャネルが閉じられるまでバインドされたままになります。 この関係はunbindAddressによって削除される可能性があるため、必ずしもアドレスlocalとの関係であるとはかぎりませんが、このメソッドの呼出しが正常に完了すれば、チャネルのソケットにバインドされたローカル・アドレスが必ず1つ以上存在します。

      チャネルのソケットが(自動的に割り当てられない)特定のアドレスに正常にバインドされると、追加のアドレスをbindAddressを使用してバインドしたり、unbindAddressを使用して削除したりできます。

      backlogパラメータは、ソケットの保留されているアソシエーションの最大数です。 正確なセマンティックスは実装に固有です。 実装によっては、特定の最大長が規定されていたり、パラメータが無視されたりする場合もあります。 backlogパラメータの値が0または負の値の場合は、実装固有のデフォルトが使用されます。

      パラメータ:
      local - ソケットのバインド先のローカル・アドレス、または自動的に割り当てられるソケット・アドレスにソケットをバインドする場合はnull
      backlog - 保留中の関連付けの最大数
      戻り値:
      このチャネル
      例外:
      ClosedChannelException - このチャネルがクローズしている場合
      AlreadyBoundException - このチャネルがすでにバインドされている場合
      UnsupportedAddressTypeException - 指定されたアドレスのタイプがサポート対象外の場合
      SecurityException - セキュリティ・マネージャがインストールされていて、checkListenメソッドが操作を拒否した場合
      IOException - その他の入出力エラーが発生した場合
    • bindAddress

      public abstract SctpServerChannel bindAddress​(InetAddress address) throws IOException
      指定されたアドレスをチャネルのソケットにバインドされているアドレスに追加します。

      指定されたアドレスは、ワイルドカード・アドレスであってはいけません。 このメソッドを呼び出す前に、まずbindを使用してチャネルをバインドする必要があります。そうしないと、NotYetBoundExceptionがスローされます。 bindメソッドは、引数としてSocketAddressを取ります。通常は、アドレスに加えてポート番号も含まれます。 チャネルの存続期間内はSCTPポート番号は同じままであるため、その後、このメソッドを使用してバインドされたアドレスにはアドレスのみが含まれます。

      このメソッドが正常に完了したあとに受け付けられる新しいアソシエーションでは、指定されたアドレスと関連付けされます。

      パラメータ:
      address - ソケットにバインドされたアドレスに追加されるアドレス
      戻り値:
      このチャネル
      例外:
      ClosedChannelException - このチャネルがクローズしている場合
      NotYetBoundException - このチャネルがまだバインドされていない場合
      AlreadyBoundException - このチャネルがすでに指定されたアドレスにバインドされている場合
      IllegalArgumentException - アドレスがnullまたはwildcardアドレスの場合
      IOException - その他の入出力エラーが発生した場合
    • unbindAddress

      public abstract SctpServerChannel unbindAddress​(InetAddress address) throws IOException
      指定されたアドレスをチャネルのソケットにバインドされているアドレスから削除します。

      指定されたアドレスは、ワイルドカード・アドレスであってはいけません。 このメソッドを呼び出す前に、まずbindを使用してチャネルをバインドする必要があります。そうしないと、NotYetBoundExceptionがスローされます。 バインドされたアドレスの1つとしてaddressが含まれないチャネルまたはバインドされているローカル・アドレスが1つしかないチャネルでこのメソッドが呼び出された場合はIllegalUnbindExceptionがスローされます。 bindを使用してチャネルのソケットがバインドされる初期アドレスは、チャネルのソケットにバインドされたアドレスから削除される可能性があります。

      このメソッドが正常に完了したあとに受け付けられる新しいアソシエーションでは、指定されたアドレスと関連付けされません。

      パラメータ:
      address - ソケットにバインドされたアドレスから削除されるアドレス
      戻り値:
      このチャネル
      例外:
      ClosedChannelException - このチャネルがクローズしている場合
      NotYetBoundException - このチャネルがまだバインドされていない場合
      IllegalArgumentException - アドレスがnullまたはwildcardアドレスの場合
      IllegalUnbindException - 実装でリスニング・ソケットからのアドレスの削除をサポートしない場合、addressはチャネルのソケットにバインドされません。それ以外の場合、チャネルにはバインドされたアドレスが1つのみあります
      IOException - その他の入出力エラーが発生した場合
    • getAllLocalAddresses

      public abstract Set<SocketAddress> getAllLocalAddresses() throws IOException
      このチャネルのソケットがバインドされているすべてのソケット・アドレスを返します。
      戻り値:
      このチャネルのソケットがバインドされているすべてのソケット・アドレス、チャネルのソケットがバインドされていない場合は空のSet
      例外:
      ClosedChannelException - チャネルがクローズしている場合
      IOException - 入出力エラーが発生した場合
    • getOption

      public abstract <T> T getOption​(SctpSocketOption<T> name) throws IOException
      ソケット・オプションの値を返します。
      型パラメータ:
      T - ソケット・オプション値のタイプ
      パラメータ:
      name - ソケット・オプション
      戻り値:
      ソケット・オプションの値。 一部のソケット・オプションに対しては、nullの値が有効な値である場合があります。
      例外:
      UnsupportedOperationException - チャネルがソケット・オプションをサポートしていない場合
      ClosedChannelException - このチャネルがクローズしている場合
      IOException - 入出力エラーが発生した場合
      関連項目:
      SctpStandardSocketOptions
    • setOption

      public abstract <T> SctpServerChannel setOption​(SctpSocketOption<T> name, T value) throws IOException
      ソケット・オプションの値を設定します。
      型パラメータ:
      T - ソケット・オプション値のタイプ
      パラメータ:
      name - ソケット・オプション
      value - ソケット・オプションの値。 一部のソケット・オプションに対しては、nullの値が有効な値である場合があります。
      戻り値:
      このチャネル
      例外:
      UnsupportedOperationException - チャネルがソケット・オプションをサポートしていない場合
      IllegalArgumentException - 値がこのソケット・オプションに対して有効な値でない場合
      ClosedChannelException - このチャネルがクローズしている場合
      IOException - 入出力エラーが発生した場合
      関連項目:
      SctpStandardSocketOptions
    • supportedOptions

      public abstract Set<SctpSocketOption<?>> supportedOptions()
      このチャネルがサポートするソケット・オプションのセットを返します。

      このメソッドは、チャネルが閉じられたあとでも引き続きオプションのセットを返します。

      戻り値:
      このチャネルでサポートされるソケット・オプションのセット
    • validOps

      public final int validOps()
      このチャネルのサポートされている操作を識別する操作セットを返します。

      SCTPサーバー・チャネルは新しいアソシエーションの受け入れのみをサポートしているため、このメソッドはSelectionKey.OP_ACCEPTを返します。

      定義:
      validOps 、クラス:  SelectableChannel
      戻り値:
      有効な操作セット