JavaTM 2 Platform
Standard Ed. 5.0

java.nio.channels
クラス ServerSocketChannel

java.lang.Object
  上位を拡張 java.nio.channels.spi.AbstractInterruptibleChannel
      上位を拡張 java.nio.channels.SelectableChannel
          上位を拡張 java.nio.channels.spi.AbstractSelectableChannel
              上位を拡張 java.nio.channels.ServerSocketChannel
すべての実装されたインタフェース:
Closeable, Channel, InterruptibleChannel

public abstract class ServerSocketChannel
extends AbstractSelectableChannel

ストリーム型リスニングソケット用の選択可能なチャネルです。

サーバソケットチャネルは、リスニングネットワークソケットの完全な抽象化ではありません。ソケットオプションのバインドと操作は、socket メソッド呼び出しによって取得した関連 ServerSocket オブジェクトを介して行う必要があります。任意の既存サーバソケットのチャネルを作成したり、サーバソケットチャネルに関連したサーバソケットで SocketImpl オブジェクトを使用するように指定したりすることはできません。

サーバソケットチャネルは、このクラスの open メソッドを呼び出すと作成されます。新しく作成されたサーバソケットチャネルはオープンですが、未バインドです。未バインドのサーバソケットチャネルの accept メソッドを呼び出そうとすると、NotYetBoundException がスローされます。サーバソケットチャネルは、関連サーバソケットの bind メソッドを呼び出すとバインドされます。

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

導入されたバージョン:
1.4

コンストラクタの概要
protected ServerSocketChannel(SelectorProvider provider)
          このクラスの新しいインスタンスを初期化します。
 
メソッドの概要
abstract  SocketChannel accept()
          このチャネルのソケットに対する接続を受け付けます。
static ServerSocketChannel open()
          サーバソケットチャネルをオープンします。
abstract  ServerSocket socket()
          このチャネルに関連したサーバソケットを取得します。
 int validOps()
          このチャネルのサポートされている操作を識別する操作セットを返します。
 
クラス 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.Channel から継承されたメソッド
close, isOpen
 

コンストラクタの詳細

ServerSocketChannel

protected ServerSocketChannel(SelectorProvider provider)
このクラスの新しいインスタンスを初期化します。

メソッドの詳細

open

public static ServerSocketChannel open()
                                throws IOException
サーバソケットチャネルをオープンします。

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

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

戻り値:
新しいソケットチャネル
例外:
IOException - 入出力エラーが発生した場合

validOps

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

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

定義:
クラス SelectableChannel 内の validOps
戻り値:
有効な操作セット

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 - その他の入出力エラーが発生した場合

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。