JavaTM 2 Platform
Std. Ed. v1.3

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 メソッドがこの操作を許可しない場合
IOException - ソケットを開いているときに入出力エラーが発生した場合
導入されたバージョン:
JDK1.1
関連項目:
SocketOptions, 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 はクライアントに接続されます。
パラメータ:
s - ソケット
例外:
IOException - 接続の待機中に入出力エラーが発生した場合
導入されたバージョン:
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 を指定すると、タイムアウトは無限と解釈されます。
パラメータ:
timeout - ミリ秒で表される、指定されたタイムアウト
例外:
SocketException - 使用しているプロトコルで TCP エラーなどのエラーが発生した場合
導入されたバージョン:
JDK1.1
関連項目:
getSoTimeout()

getSoTimeout

public int getSoTimeout()
                 throws IOException
SO_TIMEOUT の設定を取得します。このオプションが無効 (待ち時間が無限) の場合は、0 を返します。
戻り値:
SO_TIMEOUT 値
例外:
IOException - 入出力エラーが発生した場合
導入されたバージョン:
JDK1.1
関連項目:
setSoTimeout(int)

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()

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.