public abstract class ServerSocketChannel extends AbstractSelectableChannel implements NetworkChannel
このクラスのopen
メソッドを呼び出すと、サーバー・ソケット・チャネルが作成されます。任意の既存のServerSocket
のチャネルを作成することはできません。新しく作成されたサーバー・ソケット・チャネルはオープンですが、未バインドです。バインドされていないサーバー・ソケット・チャネルのaccept
メソッドを呼び出そうとすると、NotYetBoundException
がスローされます。サーバー・ソケット・チャネルは、このクラスによって定義されるbind
メソッドの1つを呼び出すことによってバインドできます。
ソケット・オプションはsetOption
メソッドを使用して構成されます。サーバー・ソケット・チャネルでは次のオプションがサポートされます。
追加(実装固有)のオプションをサポートできる場合もあります。
オプション名 説明 SO_RCVBUF
ソケット受信バッファのサイズ SO_REUSEADDR
アドレスを再利用します
サーバー・ソケット・チャネルは、複数の並行スレッドで安全に使用できます。
修飾子 | コンストラクタと説明 |
---|---|
protected |
ServerSocketChannel(SelectorProvider provider)
このクラスの新しいインスタンスを初期化します。
|
修飾子と型 | メソッドと説明 |
---|---|
abstract SocketChannel |
accept()
このチャネルのソケットに対する接続を受け付けます。
|
ServerSocketChannel |
bind(SocketAddress local)
チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。
|
abstract ServerSocketChannel |
bind(SocketAddress local, int backlog)
チャネルのソケットをローカル・アドレスにバインドし、接続を待機するようソケットを構成します。
|
abstract SocketAddress |
getLocalAddress()
このチャネルのソケットがバインドされているソケット・アドレスを返します。
|
static ServerSocketChannel |
open()
サーバー・ソケット・チャネルをオープンします。
|
abstract <T> ServerSocketChannel |
setOption(SocketOption<T> name, T value)
ソケット・オプションの値を設定します。
|
abstract ServerSocket |
socket()
このチャネルに関連したサーバー・ソケットを取得します。
|
int |
validOps()
このチャネルのサポートされている操作を識別する操作セットを返します。
|
blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register
register
begin, close, end, isOpen
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getOption, supportedOptions
protected ServerSocketChannel(SelectorProvider provider)
provider
- このチャネルの作成元プロバイダpublic static ServerSocketChannel open() throws IOException
システム全体のデフォルトSelectorProvider
オブジェクトのopenServerSocketChannel
メソッドを呼び出すことで、新しいチャネルが作成されます。
新しいチャネルのソケットは、初期状態では未バインドです。ソケットのbind
メソッドの1つを使って特定のアドレスにバインドしないと、接続は受け付けられません。
IOException
- 入出力エラーが発生した場合public final int validOps()
サーバー・ソケット・チャネルは、新しい接続の受け付けだけをサポートします。したがって、このメソッドはSelectionKey.OP_ACCEPT
を返します。
validOps
、クラス: SelectableChannel
public final ServerSocketChannel bind(SocketAddress local) throws IOException
このメソッドの呼出しは次と同等です。
bind(local, 0);
bind
、インタフェース: NetworkChannel
local
- ソケットのバインド先のローカル・アドレス、または自動的に割り当てられるソケット・アドレスにバインドする場合はnull
AlreadyBoundException
- ソケットがすでにバインドされている場合UnsupportedAddressTypeException
- 指定されたアドレスのタイプがサポート対象外の場合ClosedChannelException
- チャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャがインストールされていて、そのcheckListen
メソッドが操作を拒否した場合NetworkChannel.getLocalAddress()
public abstract ServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
このメソッドは、ソケットとローカル・アドレスとの間の関連付けを確立するために使用されます。関連付けが確立されると、ソケットはチャネルが閉じられるまでバインドされたままになります。
backlog
パラメータは、ソケットの保留されている接続の最大数です。正確なセマンティックスは実装に固有です。たとえば、実装が最大長を規定していたり、パラメータをまったく無視したりする場合があります。backlog
パラメータの値が0
または負の値の場合、実装固有のデフォルトが使用されます。
local
- ソケットのバインド先のアドレス、または自動的に割り当てられるソケット・アドレスにバインドする場合はnull
backlog
- 保留されている接続の最大数。AlreadyBoundException
- ソケットがすでにバインドされている場合UnsupportedAddressTypeException
- 指定されたアドレスのタイプがサポート対象外の場合ClosedChannelException
- このチャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャがインストールされていて、そのcheckListen
メソッドが操作を拒否した場合public abstract <T> ServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException
NetworkChannel
setOption
、インタフェース: NetworkChannel
T
- ソケット・オプション値のタイプname
- ソケット・オプションvalue
- ソケット・オプションの値。一部のソケット・オプションに対しては、null
の値が有効な値である場合があります。UnsupportedOperationException
- チャネルがソケット・オプションをサポートしていない場合IllegalArgumentException
- 値がこのソケット・オプションに対して有効な値でない場合ClosedChannelException
- このチャネルがクローズしている場合IOException
- 入出力エラーが発生した場合StandardSocketOptions
public abstract ServerSocket socket()
返されるオブジェクトは、ServerSocket
クラスで宣言されていないpublicメソッドは宣言しません。
public abstract SocketChannel accept() throws IOException
このチャネルが非ブロック・モードの場合、保留されている接続がなければ、このメソッドはただちにnullを返します。それ以外の場合、新しい接続が利用可能になるか、入出力エラーが発生するまで無期限にブロックされます。
このメソッドによって返されるソケット・チャネルは、このチャネルがブロック・モードであってもそうでなくてもブロック・モードになります。
このメソッドは、ServerSocket
クラスのaccept
メソッドとまったく同じセキュリティ・チェックを行います。セキュリティ・マネージャがインストールされている場合、このメソッドは、新しい各接続のリモート・エンドポイントのアドレスとポート番号がセキュリティ・マネージャのcheckAccept
メソッドによって許可されていることを確認します。
ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 受け付け操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 受け付け操作の進行中に、現在のスレッドに対して別のスレッドから割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合NotYetBoundException
- このチャネルのソケットが未バインドの場合SecurityException
- セキュリティ・マネージャがインストールされていて、新しい接続のリモート・エンドポイントへのアクセスが許可されていない場合IOException
- その他の入出力エラーが発生した場合public abstract SocketAddress getLocalAddress() throws IOException
チャネルがIP (Internet Protocol)ソケット・アドレスにバインド
されている場合は、このメソッドからの戻り値の型はInetSocketAddress
です。
セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャのcheckConnect
メソッドがローカル・アドレスおよび-1
を引数として呼び出され、操作が許可されるかどうかが確認されます。この操作が許可されない場合は、ループバック
・アドレスおよびチャネルのソケットのローカル・ポートを表すSocketAddress
が返されます。
getLocalAddress
、インタフェース: NetworkChannel
SocketAddress
、またはセキュリティ・マネージャによって拒否された場合はループバック・アドレスを表すSocketAddress
、またはチャネルのソケットがバインドされていない場合はnull
ClosedChannelException
- チャネルがクローズしている場合IOException
- 入出力エラーが発生した場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.