クラスServerSocketChannel
- すべての実装されたインタフェース:
Closeable,AutoCloseable,Channel,InterruptibleChannel,NetworkChannel
サーバー・ソケット・チャネルは、このクラスのopenメソッドのいずれかを呼び出すことで作成されます。 no-arg openメソッドは、「インターネット・プロトコル」ソケットのサーバー・ソケット・チャネルを開きます。 open(ProtocolFamily)メソッドは、指定されたプロトコル・ファミリのソケットのサーバー・ソケット・チャネルを開くために使用されます。 任意の既存のソケット用にチャネルを作成することはできません。 新しく作成されたサーバー・ソケット・チャネルはオープンですが、未バインドです。 バインドされていないサーバー・ソケット・チャネルのacceptメソッドを呼び出そうとすると、NotYetBoundExceptionがスローされます。 サーバー・ソケット・チャネルは、このクラスによって定義されるbindメソッドの1つを呼び出すことによってバインドできます。
ソケット・オプションはsetOptionメソッドを使用して構成されます。 「インターネット・プロトコル」ソケットのサーバー・ソケット・チャネルでは、次のオプションがサポートされます:
オプション名 説明 SO_RCVBUFソケット受信バッファのサイズ SO_REUSEADDRアドレスを再利用します
「Unixドメイン」ソケットのサーバー・ソケット・チャネルでは、次のものがサポートされます:
オプション名 説明 SO_RCVBUFソケット受信バッファのサイズ
追加(実装固有)のオプションをサポートできる場合もあります。
サーバー・ソケット・チャネルは、複数の並行スレッドで安全に使用できます。
- 導入されたバージョン:
- 1.4
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明abstract SocketChannelaccept()このチャネルのソケットに対する接続を受け付けます。final ServerSocketChannelbind(SocketAddress local) チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。abstract ServerSocketChannelbind(SocketAddress local, int backlog) チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。abstract SocketAddressこのチャネルのソケットがバインドされているソケット・アドレスを返します。static ServerSocketChannelopen()「インターネット・プロトコル」ソケットのサーバー・ソケット・チャネルを開きます。static ServerSocketChannelopen(ProtocolFamily family) サーバー・ソケット・チャネルをオープンします。abstract <T> ServerSocketChannelsetOption(SocketOption<T> name, T value) ソケット・オプションの値を設定します。abstract ServerSocketsocket()このチャネルに関連したサーバー・ソケットを取得します。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クラスjava.lang.Objectで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitインタフェースjava.nio.channels.NetworkChannelで宣言されたメソッド
getOption, supportedOptions
-
コンストラクタの詳細
-
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- ソケットのバインド先のアドレス、または自動的に割り当てられるソケット・アドレスにバインドする場合はnullbacklog- 保留されている接続の最大数。- 戻り値:
- このチャネル
- スロー:
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- 入出力エラーが発生した場合
-