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, registerregisterbegin, close, end, isOpenclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetOption, supportedOptionsprotected ServerSocketChannel(SelectorProvider provider)
provider - このチャネルの作成元プロバイダpublic static ServerSocketChannel open() throws IOException
システム全体のデフォルトSelectorProviderオブジェクトのopenServerSocketChannelメソッドを呼び出すことで、新しいチャネルが作成されます。
新しいチャネルのソケットは、初期状態では未バインドです。ソケットのbindメソッドの1つを使って特定のアドレスにバインドしないと、接続は受け付けられません。
IOException - 入出力エラーが発生した場合public final int validOps()
サーバー・ソケット・チャネルは、新しい接続の受け付けだけをサポートします。したがって、このメソッドはSelectionKey.OP_ACCEPTを返します。
validOps、クラスSelectableChannelpublic final ServerSocketChannel bind(SocketAddress local) throws IOException
このメソッドの呼出しは次と同等です。
bind(local, 0);
bind、インタフェースNetworkChannellocal - ソケットのバインド先のローカル・アドレス、または自動的に割り当てられるソケット・アドレスにバインドする場合はnullAlreadyBoundException - ソケットがすでにバインドされている場合UnsupportedAddressTypeException - 指定されたアドレスのタイプがサポート対象外の場合ClosedChannelException - チャネルがクローズしている場合IOException - その他の入出力エラーが発生した場合SecurityException - セキュリティ・マネージャがインストールされていて、そのcheckListenメソッドが操作を拒否した場合NetworkChannel.getLocalAddress()public abstract ServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
このメソッドは、ソケットとローカル・アドレスとの間の関連付けを確立するために使用されます。 関連付けが確立されると、ソケットはチャネルが閉じられるまでバインドされたままになります。
backlogパラメータは、ソケットの保留されている接続の最大数です。 正確なセマンティックスは実装に固有です。 たとえば、実装が最大長を規定していたり、パラメータをまったく無視したりする場合があります。 backlogパラメータの値が0または負の値の場合、実装固有のデフォルトが使用されます。
local - ソケットのバインド先のアドレス、または自動的に割り当てられるソケット・アドレスにバインドする場合はnullbacklog - 保留されている接続の最大数。AlreadyBoundException - ソケットがすでにバインドされている場合UnsupportedAddressTypeException - 指定されたアドレスのタイプがサポート対象外の場合ClosedChannelException - このチャネルがクローズしている場合IOException - その他の入出力エラーが発生した場合SecurityException - セキュリティ・マネージャがインストールされていて、そのcheckListenメソッドが操作を拒否した場合public abstract <T> ServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException
NetworkChannelsetOption、インタフェースNetworkChannelT - ソケット・オプション値のタイプname - ソケット・オプションvalue - ソケット・オプションの値。 一部のソケット・オプションに対しては、nullの値が有効な値である場合があります。 UnsupportedOperationException - チャネルがソケット・オプションをサポートしていない場合IllegalArgumentException - 値がこのソケット・オプションに対して有効な値でない場合ClosedChannelException - このチャネルがクローズしている場合IOException - 入出力エラーが発生した場合StandardSocketOptionspublic 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
チャネルがInternet Protocolソケット・アドレスにバインドされている場合は、このメソッドからの戻り値の型はInetSocketAddressです。
セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャのcheckConnectメソッドがローカル・アドレスおよび-1を引数として呼び出され、操作が許可されるかどうかが確認されます。 この操作が許可されない場合は、ループバック・アドレスおよびチャネルのソケットのローカル・ポートを表すSocketAddressが返されます。
getLocalAddress、インタフェースNetworkChannelSocketAddress、またはセキュリティ・マネージャによって拒否された場合はループバック・アドレスを表すSocketAddress、またはチャネルのソケットがバインドされていない場合はnullClosedChannelException - チャネルがクローズしている場合IOException - 入出力エラーが発生した場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。