クラスAsynchronousServerSocketChannel

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
    このクラスの新しいインスタンスを初期化します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    接続を受け入れます。
    abstract <A> void
    accept(A attachment, CompletionHandler<AsynchronousSocketChannel, ? super A> handler)
    接続を受け入れます。
    チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。
    bind(SocketAddress local, int backlog)
    チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。
    abstract SocketAddress
    このチャネルのソケットがバインドされているソケット・アドレスを返します。
    非同期のサーバー・ソケット・チャネルを開きます。
    非同期のサーバー・ソケット・チャネルを開きます。
    このチャネルの作成元プロバイダを返します。
    setOption(SocketOption<T> name, T value)
    ソケット・オプションの値を設定します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。

    インタフェースで宣言されたメソッド AsynchronousChannel

    close
    修飾子と型
    メソッド
    説明
    void
    現在のチャネルをクローズします。

    インタフェースChannelで宣言されたメソッド

    isOpen
    修飾子と型
    メソッド
    説明
    boolean
    現在のチャネルの状態がオープンであるかどうかを判断します。

    インタフェースで宣言されたメソッド NetworkChannel

    getOption, supportedOptions
    修飾子と型
    メソッド
    説明
    <T> T
    ソケット・オプションの値を返します。
    このチャネルがサポートするソケット・オプションのセットを返します。
  • コンストラクタの詳細

    • AsynchronousServerSocketChannel

      protected AsynchronousServerSocketChannel(AsynchronousChannelProvider provider)
      このクラスの新しいインスタンスを初期化します。
      パラメータ:
      provider - このチャネルの作成元プロバイダ
  • メソッドの詳細

    • provider

      public final AsynchronousChannelProvider provider()
      このチャネルの作成元プロバイダを返します。
      戻り値:
      このチャネルの作成元プロバイダ
    • open

      非同期のサーバー・ソケット・チャネルを開きます。

      指定したグループを作成した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 - 指定されたアドレスのタイプがサポート対象外の場合
      ClosedChannelException - チャネルがクローズしている場合
      IOException - その他の入出力エラーが発生した場合
      関連項目:
    • bind

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

      このメソッドは、ソケットとローカル・アドレスとの間の関連付けを確立するために使用されます。 関連付けが確立されると、ソケットは関連するチャネルが閉じられるまでバインドされたままになります。

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

      パラメータ:
      local - ソケットのバインド先のローカル・アドレス、または自動的に割り当てられるソケット・アドレスにバインドする場合はnull
      backlog - 保留されている接続の最大数。
      戻り値:
      このチャネル
      スロー:
      AlreadyBoundException - ソケットがすでにバインドされている場合
      UnsupportedAddressTypeException - 指定されたアドレスのタイプがサポート対象外の場合
      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 - 入出力エラーが発生した場合
      関連項目:
    • accept

      public abstract <A> void accept(A attachment, CompletionHandler<AsynchronousSocketChannel, ? super A> handler)
      接続を受け入れます。

      このメソッドは、このチャネルのソケットに対する接続を受け付けるための非同期操作を開始します。 handlerパラメータは、接続が受け付けられた(または操作が失敗した)ときに呼び出される終了ハンドラです。 終了ハンドラに渡される結果は、新しい接続へのAsynchronousSocketChannelです。

      新しい接続が受け付けられると、結果の AsynchronousSocketChannelは、このチャネルと同じAsynchronousChannelGroupにバインドされます。 グループがshutdownで、接続が受け入れられた場合、接続はクローズされ、操作は IOExceptionで完了し、ShutdownChannelGroupExceptionが発生します。

      新しい接続の並行処理を可能にするために、新しい接続がすぐに受け付けられたときに、終了ハンドラは開始スレッドによって直接呼び出されません(「スレッド」を参照)。

      型パラメータ:
      A - 添付のタイプ
      パラメータ:
      attachment - 入出力操作に接続されるオブジェクト。nullも可
      handler - 結果を消費するためのハンドラ
      スロー:
      AcceptPendingException - このチャネルで受け付け操作がすでに進行中である場合
      NotYetBoundException - このチャネルのソケットが未バインドの場合
      ShutdownChannelGroupException - チャネル・グループが終了している場合
    • accept

      public abstract Future<AsynchronousSocketChannel> accept()
      接続を受け入れます。

      このメソッドは、このチャネルのソケットに対する接続を受け付けるための非同期操作を開始します。 このメソッドは、accept(Object, CompletionHandler)メソッドとまったく同じように動作します。ただし、終了ハンドラを指定するかわりに、このメソッドは保留状態の結果を表すFutureを返します。 Futuregetメソッドは、正常に完了すると、AsynchronousSocketChannelを新しい接続に返します。

      戻り値:
      保留されている結果を表すFutureオブジェクト
      スロー:
      AcceptPendingException - このチャネルで受け付け操作がすでに進行中である場合
      NotYetBoundException - このチャネルのソケットが未バインドの場合
    • getLocalAddress

      public abstract SocketAddress getLocalAddress() throws IOException
      このチャネルのソケットがバインドされているソケット・アドレスを返します。

      チャネルがInternet Protocolソケット・アドレスにバインドされている場合は、このメソッドからの戻り値の型はInetSocketAddressです。

      定義:
      getLocalAddress、インタフェースNetworkChannel
      戻り値:
      ソケットがバインドされているSocketAddress。チャネルのソケットがバインドされていない場合はnull
      スロー:
      ClosedChannelException - チャネルがクローズしている場合
      IOException - 入出力エラーが発生した場合