クラスServerSocketChannel

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

public abstract class ServerSocketChannel extends AbstractSelectableChannel implements NetworkChannel
ストリーム型リスニング・ソケット用の選択可能なチャネルです。

サーバー・ソケット・チャネルは、このクラスのopenメソッドのいずれかを呼び出すことで作成されます。 no-arg openメソッドは、「インターネット・プロトコル」ソケットのサーバー・ソケット・チャネルを開きます。 open(ProtocolFamily)メソッドは、指定されたプロトコル・ファミリのソケットのサーバー・ソケット・チャネルを開くために使用されます。 任意の既存のソケット用にチャネルを作成することはできません。 新しく作成されたサーバー・ソケット・チャネルはオープンですが、未バインドです。 バインドされていないサーバー・ソケット・チャネルのacceptメソッドを呼び出そうとすると、NotYetBoundExceptionがスローされます。 サーバー・ソケット・チャネルは、このクラスによって定義されるbindメソッドの1つを呼び出すことによってバインドできます。

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

ソケット・オプション
オプション名 説明
SO_RCVBUF ソケット受信バッファのサイズ
SO_REUSEADDR アドレスを再利用します

「Unixドメイン」ソケットのサーバー・ソケット・チャネルでは、次のものがサポートされます:

ソケット・オプション
オプション名 説明
SO_RCVBUF ソケット受信バッファのサイズ

追加(実装固有)のオプションをサポートできる場合もあります。

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

導入されたバージョン:
1.4
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    このクラスの新しいインスタンスを初期化します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    abstract SocketChannel
    このチャネルのソケットに対する接続を受け付けます。
    チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。
    bind(SocketAddress local, int backlog)
    チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。
    abstract SocketAddress
    このチャネルのソケットがバインドされているソケット・アドレスを返します。
    「インターネット・プロトコル」ソケットのサーバー・ソケット・チャネルを開きます。
    サーバー・ソケット・チャネルをオープンします。
    abstract <T> ServerSocketChannel
    setOption(SocketOption<T> name, T value)
    ソケット・オプションの値を設定します。
    abstract ServerSocket
    このチャネルに関連したサーバー・ソケットを取得します。
    final int
    このチャネルのサポートされている操作を識別する操作セットを返します。

    クラスで宣言されたメソッド AbstractSelectableChannel

    blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register
    修飾子と型
    メソッド
    説明
    final Object
    configureBlockingおよびregisterメソッドが同期するオブジェクトを取得します。
    configureBlocking(boolean block)
    このチャネルのブロック・モードを調整します。
    protected final void
    現在のチャネルをクローズします。
    protected abstract void
    この選択可能チャネルをクローズします。
    protected abstract void
    implConfigureBlocking(boolean block)
    このチャネルのブロック・モードを調整します。
    final boolean
    このチャネル上の個々の入出力操作が前の入出力操作が完了するまでブロックされるかどうかを判断します。
    final boolean
    現在このチャネルがセレクタに登録されているかどうかを判断します。
    チャネルが指定されたセレクタに登録されていることを示すキーを取得します。
    このチャネルの作成元プロバイダを返します。
    register(Selector sel, int ops, Object att)
    このチャネルを指定されたセレクタに登録し、選択キーを返します。

    クラスで宣言されたメソッド SelectableChannel

    register
    修飾子と型
    メソッド
    説明
    register(Selector sel, int ops)
    このチャネルを指定されたセレクタに登録し、選択キーを返します。

    クラスで宣言されたメソッド AbstractInterruptibleChannel

    begin, close, end, isOpen
    修飾子と型
    メソッド
    説明
    protected final void
    無期限にブロックされる入出力操作の開始をマークします。
    final void
    現在のチャネルをクローズします。
    protected final void
    end(boolean completed)
    無期限にブロックされる入出力操作の終了をマークします。
    final boolean
    現在のチャネルの状態がオープンであるかどうかを判断します。

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

    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であるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。

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

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

    • ServerSocketChannel

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

    • open

      public static ServerSocketChannel open() throws IOException
      「インターネット・プロトコル」ソケットのサーバー・ソケット・チャネルを開きます。

      システム全体のデフォルトSelectorProviderオブジェクトのopenServerSocketChannelメソッドを呼び出すことで、新しいチャネルが作成されます。

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

      戻り値:
      新しいソケット・チャネル
      スロー:
      IOException - 入出力エラーが発生した場合
      関連項目:
    • open

      public static ServerSocketChannel open(ProtocolFamily family) throws IOException
      サーバー・ソケット・チャネルをオープンします。 familyパラメータは、チャネル・ソケットのprotocol familyを指定します。

      新しいチャネルは、システム全体のデフォルトSelectorProviderオブジェクトのopenServerSocketChannel(ProtocolFamily)メソッドを呼び出すことで作成されます。

      パラメータ:
      family - プロトコル・ファミリ
      戻り値:
      新しいソケット・チャネル
      スロー:
      UnsupportedOperationException - 指定されたプロトコル・ファミリがサポートされていない場合。 たとえば、パラメータにStandardProtocolFamily.INET6が指定されているが、IPv6がプラットフォームで有効になっていないとします。
      IOException - 入出力エラーが発生した場合
      導入されたバージョン:
      15
      関連項目:
    • validOps

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

      サーバー・ソケット・チャネルは、新しい接続の受け付けだけをサポートします。したがって、このメソッドはSelectionKey.OP_ACCEPTを返します。

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

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

      このメソッドの呼出しは次と同等です。

          bind(local, 0);
      

      定義:
      bind、インタフェースNetworkChannel
      パラメータ:
      local - ソケットのバインド先のローカル・アドレス、または自動的に割り当てられるソケット・アドレスにバインドする場合はnull
      戻り値:
      このチャネル
      スロー:
      AlreadyBoundException - ソケットがすでにバインドされている場合
      UnsupportedAddressTypeException - 指定されたアドレスのタイプがサポート対象外の場合
      ClosedChannelException - チャネルがクローズしている場合
      IOException - その他の入出力エラーが発生した場合
      導入されたバージョン:
      1.7
      関連項目:
    • bind

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

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

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

      APIのノート:
      「Unixドメイン」ソケットのサーバー・ソケット・チャネルをバインドすると、UnixDomainSocketAddressのファイル・パスに対応するファイルが作成されます。 このファイルはチャネルがクローズされた後も保持され、別のソケットを同じ名前にバインドする前に削除する必要があります。 nullアドレスにバインドすると、ソケットはシステムの一時的なロケーションにある一意のファイルに「自動」でバインドされます。 関連付けられたソケット・ファイルは、チャネルがクローズされた後も保持されます。 その名前は、チャネルのローカル・ソケット・アドレスから取得できます。
      実装上のノート:
      各プラットフォームでは、「Unixドメイン」ソケットの名前に対して実装固有の最大長が適用されます。 この制限は、チャネルがバインドされるときに適用されます。 通常、最大長は100バイト以下です。 この制限は、「自動」バウンドのサーバー・ソケット・チャネルにも適用されます。 これらのソケットが作成される一時ディレクトリの選択に使用できる「Unixドメイン」 「ネットワーキング・プロパティ」を参照してください。
      パラメータ:
      local - ソケットのバインド先のアドレス、または自動的に割り当てられるソケット・アドレスにバインドする場合はnull
      backlog - 保留されている接続の最大数。
      戻り値:
      このチャネル
      スロー:
      AlreadyBoundException - ソケットがすでにバインドされている場合
      UnsupportedAddressTypeException - 指定されたアドレスのタイプがサポート対象外の場合
      ClosedChannelException - このチャネルがクローズしている場合
      IOException - その他の入出力エラーが発生した場合
      導入されたバージョン:
      1.7
    • setOption

      public abstract <T> ServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException
      インタフェースからコピーされた説明: NetworkChannel
      ソケット・オプションの値を設定します。
      定義:
      setOption、インタフェースNetworkChannel
      型パラメータ:
      T - ソケット・オプション値のタイプ
      パラメータ:
      name - ソケット・オプション
      value - ソケット・オプションの値。 一部のソケット・オプションに対しては、nullの値が有効な値である場合があります。
      戻り値:
      このチャネル
      スロー:
      UnsupportedOperationException - チャネルがソケット・オプションをサポートしていない場合
      IllegalArgumentException - 値がこのソケット・オプションに対して有効な値でない場合
      ClosedChannelException - このチャネルがクローズしている場合
      IOException - 入出力エラーが発生した場合
      導入されたバージョン:
      1.7
      関連項目:
    • socket

      public abstract ServerSocket socket()
      このチャネルに関連したサーバー・ソケットを取得します。

      返されるオブジェクトは、ServerSocketクラスで宣言されていないpublicメソッドは宣言しません。

      戻り値:
      このチャネルに関連したサーバー・ソケット
      スロー:
      UnsupportedOperationException - チャネル・ソケットが「インターネット・プロトコル」ソケットでない場合
    • accept

      public abstract SocketChannel accept() throws IOException
      このチャネルのソケットに対する接続を受け付けます。

      このチャネルが非ブロッキング・モードの場合、保留中の接続がない場合、このメソッドはすぐにnullを返します。 それ以外の場合、新しい接続が利用可能になるか、入出力エラーが発生するまで無期限にブロックされます。

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

      戻り値:
      新しい接続のソケット・チャネル。このチャネルが非ブロッキング・モードであり、受け入れ可能な接続がない場合はnull
      スロー:
      ClosedChannelException - このチャネルがクローズしている場合
      AsynchronousCloseException - 受け付け操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
      ClosedByInterruptException - 受入れ操作の進行中に別のスレッドが現在のスレッドを中断した場合、チャネルをクローズし、現在のスレッドの中断ステータスを設定します
      NotYetBoundException - このチャネルのソケットが未バインドの場合
      IOException - その他の入出力エラーが発生した場合
    • getLocalAddress

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

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

      チャネルが「Unixドメイン」ソケット・アドレスにバインドされている場合、ソケット・アドレスはUnixDomainSocketAddressです。

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