- すべての実装されたインタフェース:
Closeable
,AutoCloseable
,Channel
,InterruptibleChannel
,NetworkChannel
public abstract class ServerSocketChannel extends AbstractSelectableChannel implements NetworkChannel
このクラスのopen
メソッドを呼び出すと、サーバー・ソケット・チャネルが作成されます。 任意の既存のServerSocket
のチャネルを作成することはできません。 新しく作成されたサーバー・ソケット・チャネルはオープンですが、未バインドです。 バインドされていないサーバー・ソケット・チャネルのaccept
メソッドを呼び出そうとすると、NotYetBoundException
がスローされます。 サーバー・ソケット・チャネルは、このクラスによって定義されるbind
メソッドの1つを呼び出すことによってバインドできます。
ソケット・オプションはsetOption
メソッドを使用して構成されます。 サーバー・ソケット・チャネルでは次のオプションがサポートされます。
追加(実装固有)のオプションをサポートできる場合もあります。
オプション名 説明 SO_RCVBUF
ソケット受信バッファのサイズ SO_REUSEADDR
アドレスを再利用します
サーバー・ソケット・チャネルは、複数の並行スレッドで安全に使用できます。
- 導入されたバージョン:
- 1.4
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protected
ServerSocketChannel(SelectorProvider provider)
このクラスの新しいインスタンスを初期化します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 abstract SocketChannel
accept()
このチャネルのソケットに対する接続を受け付けます。ServerSocketChannel
bind(SocketAddress local)
チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。abstract ServerSocketChannel
bind(SocketAddress local, int backlog)
チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。abstract SocketAddress
getLocalAddress()
このチャネルのソケットがバインドされているソケット・アドレスを返します。static ServerSocketChannel
open()
サーバー・ソケット・チャネルをオープンします。static ServerSocketChannel
open(ProtocolFamily family)
サーバー・ソケットをオープンします。channel.Thefamily
パラメータでは、チャネル・ソケットのprotocol family
を指定します。abstract <T> ServerSocketChannel
setOption(SocketOption<T> name, T value)
ソケット・オプションの値を設定します。abstract ServerSocket
socket()
このチャネルに関連したサーバー・ソケットを取得します。int
validOps()
このチャネルのサポートされている操作を識別する操作セットを返します。クラス java.nio.channels.spi.AbstractSelectableChannelで宣言されたメソッド
configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, provider, register
クラス java.nio.channels.SelectableChannelで宣言されたメソッド
blockingLock, isBlocking, isRegistered, keyFor, register
クラス java.nio.channels.spi.AbstractInterruptibleChannelで宣言されたメソッド
begin, close, end
クラス 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サーバー・ソケットをオープンします。channel.Thefamily
パラメータでは、チャネル・ソケットの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
- その他の入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャがインストールされていて、checkListen
メソッドが操作を拒否した場合- 導入されたバージョン:
- 1.7
- 関連項目:
NetworkChannel.getLocalAddress()
-
bind
public abstract ServerSocketChannel bind(SocketAddress local, int backlog) throws IOExceptionチャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。このメソッドは、ソケットとローカル・アドレスとの間の関連付けを確立するために使用されます。 関連付けが確立されると、ソケットはチャネルが閉じられるまでバインドされたままになります。
backlog
パラメータは、ソケットの保留されている接続の最大数です。 正確なセマンティックスは実装に固有です。 たとえば、実装が最大長を規定していたり、パラメータをまったく無視したりする場合があります。backlog
パラメータの値が0
または負の値の場合、実装固有のデフォルトが使用されます。- パラメータ:
local
- ソケットのバインド先のアドレス、または自動的に割り当てられるソケット・アドレスにバインドする場合はnull
backlog
- 保留されている接続の最大数。- 戻り値:
- このチャネル
- 例外:
AlreadyBoundException
- ソケットがすでにバインドされている場合UnsupportedAddressTypeException
- 指定されたアドレスのタイプがサポート対象外の場合ClosedChannelException
- このチャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャがインストールされていて、checkListen
メソッドが操作を拒否した場合- 導入されたバージョン:
- 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
- 関連項目:
StandardSocketOptions
-
socket
public abstract ServerSocket socket()このチャネルに関連したサーバー・ソケットを取得します。返されるオブジェクトは、
ServerSocket
クラスで宣言されていないpublicメソッドは宣言しません。- 戻り値:
- このチャネルに関連したサーバー・ソケット
-
accept
public abstract SocketChannel accept() throws IOExceptionこのチャネルのソケットに対する接続を受け付けます。このチャネルが非ブロック・モードの場合、保留されている接続がなければ、このメソッドはただちに
null
を返します。 それ以外の場合、新しい接続が利用可能になるか、入出力エラーが発生するまで無期限にブロックされます。このメソッドによって返されるソケット・チャネルは、このチャネルがブロック・モードであってもそうでなくてもブロック・モードになります。
このメソッドは、
ServerSocket
クラスのaccept
メソッドとまったく同じセキュリティ・チェックを行います。 セキュリティ・マネージャがインストールされている場合、このメソッドは、新しい各接続のリモート・エンドポイントのアドレスとポート番号がセキュリティ・マネージャのcheckAccept
メソッドによって許可されていることを確認します。- 戻り値:
- 新しい接続のソケット・チャネル。このチャネルが非ブロック・モードで、受け付け可能な接続が存在しない場合は
null
- 例外:
ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 受け付け操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 受け付け操作の進行中に、現在のスレッドに対して別のスレッドから割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合NotYetBoundException
- このチャネルのソケットが未バインドの場合SecurityException
- セキュリティ・マネージャがインストールされていて、新しい接続のリモート・エンドポイントへのアクセスが許可されていない場合IOException
- その他の入出力エラーが発生した場合
-
getLocalAddress
public abstract SocketAddress getLocalAddress() throws IOExceptionこのチャネルのソケットがバインドされているソケット・アドレスを返します。チャネルがInternet Protocolソケット・アドレスに
バインド
されている場合は、このメソッドからの戻り値の型はInetSocketAddress
です。セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャの
checkConnect
メソッドがローカル・アドレスおよび-1
を引数として呼び出され、操作が許可されるかどうかが確認されます。 この操作が許可されない場合は、ループバック
・アドレスおよびチャネルのソケットのローカル・ポートを表すSocketAddress
が返されます。- 定義:
getLocalAddress
、インタフェース:NetworkChannel
- 戻り値:
- ソケットがバインドされている
SocketAddress
、またはセキュリティ・マネージャによって拒否された場合はループバック・アドレスを表すSocketAddress
、またはチャネルのソケットがバインドされていない場合はnull
- 例外:
ClosedChannelException
- チャネルがクローズしている場合IOException
- 入出力エラーが発生した場合
-