Java プラットフォーム 1.2

java.net
クラス ServerSocket

java.lang.Object
  |
  +--java.net.ServerSocket

public class ServerSocket
extends Object

サーバソケットを実装するクラスです。サーバソケットは、ネットワークを介して要求が送られてくるのを待ちます。その要求に基づいて処理を行い、場合によっては要求元に結果を返します。

サーバソケットの実際の処理は、SocketImpl クラスのインスタンスによって行われます。アプリケーションでは、ソケットを作成するソケットファクトリを変更して、ローカルファイアウォールに適したソケットを作成するようにアプリケーション自身を構成することができます。

導入されたバージョン:
JDK1.0
関連項目:
SocketImpl, setSocketFactory(java.net.SocketImplFactory)

コンストラクタの概要
ServerSocket(int port)
          指定されたポート上にサーバソケットを作成します。
ServerSocket(int port, int backlog)
          サーバソケットを作成し、指定されたローカルポート番号にバインドします。
ServerSocket(int port, int backlog, InetAddress bindAddr)
          指定されたポート、待ち行列の最大長、およびローカル IP アドレスを使用して、サーバを作成します。
 
メソッドの概要
 Socket accept()
          このソケットに対する接続要求を待機し、それを受け取ります。
 void close()
          このソケットを閉じます。
 InetAddress getInetAddress()
          このサーバソケットのローカルアドレスを返します。
 int getLocalPort()
          このソケットが接続を待機中のポートを返します。
 int getSoTimeout()
          SO_TIMEOUT の設定を取得します。
protected  void implAccept(Socket s)
          ServerSocket のサブクラスでは、このメソッドを使用してソケットの独自のサブクラスを返すように accept() をオーバーライドすることができます。
static void setSocketFactory(SocketImplFactory fac)
          アプリケーションのサーバソケット実装ファクトリを設定します。
 void setSoTimeout(int timeout)
          指定された待ち時間 (ミリ秒単位) を使用して SO_TIMEOUT を有効または無効にします。
 String toString()
          このソケットの実装アドレスと実装ポートを String として返します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

ServerSocket

public ServerSocket(int port)
             throws IOException
指定されたポート上にサーバソケットを作成します。0 を指定すると、空いているポート上にソケットが作成されます。

受信する接続 (接続要求) の待ち行列の最大長は 50 に設定されます。待ち行列が埋まっているときに接続要求があると、接続は拒否されます。

アプリケーションに指定されたサーバソケットファクトリがある場合は、そのファクトリの createSocketImpl メソッドが呼び出されて実際のソケットが作成されます。それ以外の場合は「プレーンな」ソケットが作成されます。

セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkListen メソッドが、引数として port を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。

パラメータ:
port - ポート番号。空いているポートを使用する場合は 0
例外:
IOException - ソケットを開いているときに入出力エラーが発生した場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkListen メソッドがこの操作を許可しない場合
関連項目:
SocketImpl, SocketImplFactory.createSocketImpl(), setSocketFactory(java.net.SocketImplFactory), SecurityManager.checkListen(int)

ServerSocket

public ServerSocket(int port,
                    int backlog)
             throws IOException
サーバソケットを作成し、指定されたローカルポート番号にバインドします。ポート番号に 0 を指定すると、空いているポート上にソケットが作成されます。

受信する接続 (接続要求) の待ち行列の最大長は、backlog パラメータの値に設定されます。待ち行列が埋まっているときに接続要求があると、接続は拒否されます。

アプリケーションに指定されたサーバソケットファクトリがある場合は、そのファクトリの createSocketImpl メソッドが呼び出されて、実際のソケットが作成されます。それ以外の場合は「プレーンな」ソケットが作成されます。

セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkListen メソッドが、引数として port を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。

パラメータ:
port - 使用するポート。空いているポートを使用する場合は 0
backlog - 待ち行列の最大長
例外:
IOException - ソケットを開いているときに入出力エラーが発生した場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkListen メソッドがこの操作を許可しない場合
関連項目:
SocketImpl, SocketImplFactory.createSocketImpl(), setSocketFactory(java.net.SocketImplFactory), SecurityManager.checkListen(int)

ServerSocket

public ServerSocket(int port,
                    int backlog,
                    InetAddress bindAddr)
             throws IOException
指定されたポート、待ち行列の最大長、およびローカル IP アドレスを使用して、サーバを作成します。複数ホームのホストでは、bindAddr 引数を使用して、1 つのアドレスに対する接続要求だけを受け取る ServerSocket を作成することができます。bindAddr に null を指定すると、デフォルト値によりすべてのローカルアドレスに対する接続を受け取ります。ポート番号には 0 から 65535 までの値を指定します。

セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkListen メソッドが、引数として port を指定して呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。

パラメータ:
port - ローカル TCP ポート
backlog - 待ち行列の最大長
bindAddr - サーバをバインドするローカル InetAddress
例外:
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkListen メソッドがこの操作を許可しない場合
導入されたバージョン:
JDK1.1
関連項目:
SocketConstants, SocketOption, SocketImpl, SecurityManager.checkListen(int)
メソッドの詳細

getInetAddress

public InetAddress getInetAddress()
このサーバソケットのローカルアドレスを返します。
戻り値:
このソケットの接続先のアドレス。ソケットがまだ接続されていない場合は null

getLocalPort

public int getLocalPort()
このソケットが接続を待機中のポートを返します。
戻り値:
このソケットが接続を待機中のポート番号

accept

public Socket accept()
              throws IOException
このソケットに対する接続要求を待機し、それを受け取ります。メソッドは接続が確立されるまでブロックしています。

新しいソケット s が作成され、セキュリティマネージャが存在する場合、セキュリティマネージャの checkAccept メソッドが、引数として s.getInetAddress().getHostAddress() および s.getPort() を指定して呼び出され、この操作の実行が許可されていることを確認します。この結果、SecurityException になることがあります。

例外:
IOException - 接続の待機中に入出力エラーが発生した場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkListen メソッドがこの操作を許可しない場合
関連項目:
SecurityManager.checkAccept(java.lang.String, int)

implAccept

protected final void implAccept(Socket s)
                         throws IOException
ServerSocket のサブクラスでは、このメソッドを使用してソケットの独自のサブクラスを返すように accept() をオーバーライドすることができます。このため、FooServerSocket は一般的にこのメソッドに「空の」 FooSocket() を渡します。implAccept から戻ると、FooSocket はクライアントに接続されます。
導入されたバージョン:
JDK1.1

close

public void close()
           throws IOException
このソケットを閉じます。
例外:
IOException - ソケットを閉じる時に入出力エラーが発生した場合

setSoTimeout

public void setSoTimeout(int timeout)
                  throws SocketException
指定された待ち時間 (ミリ秒単位) を使用して SO_TIMEOUT を有効または無効にします。このオプションで待ち時間をゼロ以外の値に設定してこの ServerSocket の accept() を呼び出すと、指定された時間だけブロックされます。待ち時間が経過すると、ServerSocket は有効なままで java.io.InterruptedIOException が発生します。このオプションは、ブロック操作に入る前に有効にしておく必要があります。待ち時間には 0 より大きい値を指定します。待ち時間に 0 を指定すると、待ち時間は無限と解釈されます。
導入されたバージョン:
JDK1.1

getSoTimeout

public int getSoTimeout()
                 throws IOException
SO_TIMEOUT の設定を取得します。このオプションが無効 (待ち時間が無限) の場合は、0 を返します。
導入されたバージョン:
JDK1.1

toString

public String toString()
このソケットの実装アドレスと実装ポートを String として返します。
戻り値:
このソケットの文字列表現
オーバーライド:
クラス Object 内の toString

setSocketFactory

public static void setSocketFactory(SocketImplFactory fac)
                             throws IOException
アプリケーションのサーバソケット実装ファクトリを設定します。ファクトリを設定できるのは 1 回だけです。

アプリケーションで新しいサーバソケットを作成すると、ソケット実装ファクトリの createSocketImpl メソッドが呼び出され、実際のソケットが作成されます。

セキュリティマネージャが存在する場合、まずセキュリティマネージャの checkSetFactory メソッドが呼び出され、この操作が許可されていることを確認します。この結果、SecurityException になることがあります。

パラメータ:
fac - 使用するファクトリ
例外:
IOException - ソケットファクトリの設定中に入出力エラーが発生した場合
SocketException - ファクトリがすでに定義されている場合
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkSetFactory メソッドがこの操作を許可しない場合
関連項目:
SocketImplFactory.createSocketImpl(), SecurityManager.checkSetFactory()

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.