モジュール java.base
パッケージ java.net

クラスServerSocket

java.lang.Object
java.net.ServerSocket
すべての実装されたインタフェース:
Closeable, AutoCloseable
直系の既知のサブクラス:
SSLServerSocket

public class ServerSocket
extends Object
implements Closeable
このクラスはサーバー・ソケットを実装します。 サーバー・ソケットは、ネットワーク経由で要求が送られてくるのを待ちます。 これは、その要求に基づいていくつかの操作を実行します。その後、場合によっては要求元に結果を返します。

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

ServerSocketクラスは、複数のソケット・オプションを設定および取得するための便利なメソッドを定義します。 このクラスは、ソケット・オプションを設定および問合せするsetOptionメソッドとgetOptionメソッドも定義します。 ServerSocketでは、次のオプションがサポートされています:

ソケット・オプション
オプション名 説明
SO_RCVBUF ソケット受信バッファのサイズ
SO_REUSEADDR アドレスを再利用します
追加(実装固有)のオプションをサポートできる場合もあります。

導入されたバージョン:
1.0
関連項目:
SocketImpl, setSocketFactory(java.net.SocketImplFactory), ServerSocketChannel
  • コンストラクタのサマリー

    コンストラクタ
    修飾子 コンストラクタ 説明
      ServerSocket()
    アンバウンドのサーバー・ソケットを作成します。
      ServerSocket​(int port)
    指定されたポートにバインドされたサーバー・ソケットを作成します。
      ServerSocket​(int port, int backlog)
    サーバー・ソケットを作成し、指定されたローカル・ポート番号にバインドし、指定されたバックログを設定します。
      ServerSocket​(int port, int backlog, InetAddress bindAddr)
    指定されたポート、待機バックログ、およびバインド先のローカルIPアドレスを使ってサーバーを作成します。
    protected ServerSocket​(SocketImpl impl)
    ユーザー指定のSocketImplでサーバー・ソケットを作成します。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    Socket accept()
    このソケットに対する接続要求を待機し、それを受け取ります。
    void bind​(SocketAddress endpoint)
    ServerSocketを特定のアドレス(IPアドレスおよびポート番号)にバインドします。
    void bind​(SocketAddress endpoint, int backlog)
    ServerSocketを特定のアドレス(IPアドレスおよびポート番号)にバインドします。
    void close()
    このソケットを閉じます。
    ServerSocketChannel getChannel()
    このソケットに関連付けられた一意のServerSocketChannelオブジェクトを返します(存在する場合)。
    InetAddress getInetAddress()
    このサーバー・ソケットのローカル・アドレスを返します。
    int getLocalPort()
    このソケットが接続を待機中のポート番号を返します。
    SocketAddress getLocalSocketAddress()
    このソケットのバインド先の端点のアドレスを返します。
    <T> T getOption​(SocketOption<T> name)
    ソケット・オプションの値を返します。
    int getReceiveBufferSize()
    このServerSocketで使われるSO_RCVBUFオプションの値を取得します。これは、このServerSocketから受け取るソケットに使用される推奨バッファ・サイズです。
    boolean getReuseAddress()
    SO_REUSEADDRが有効かどうかを調べます。
    int getSoTimeout()
    Retrieve setting for SO_TIMEOUT.このオプションが無効(タイム・アウトが無限)の場合は0を返します。
    protected void implAccept​(Socket s)
    ServerSocketのサブクラスは、このメソッドを使ってaccept()をオーバーライドすることで、独自のサブクラスのソケットが返されるようにします。
    boolean isBound()
    ServerSocketのバインディング状態を返します。
    boolean isClosed()
    ServerSocketの閉じた状態を返します。
    <T> ServerSocket setOption​(SocketOption<T> name, T value)
    ソケット・オプションの値を設定します。
    void setPerformancePreferences​(int connectionTime, int latency, int bandwidth)
    このServerSocketのパフォーマンス設定を行います。
    void setReceiveBufferSize​(int size)
    このServerSocketから受け入れられたソケットのSO_RCVBUFオプションのデフォルト推奨値を設定します。
    void setReuseAddress​(boolean on)
    SO_REUSEADDRソケット・オプションを有効または無効にします。
    static void setSocketFactory​(SocketImplFactory fac)
    アプリケーションのサーバー・ソケット実装ファクトリを設定します。
    void setSoTimeout​(int timeout)
    指定されたタイムアウト(ミリ秒)を使ってSO_TIMEOUTを有効または無効にします。
    Set<SocketOption<?>> supportedOptions()
    このサーバー・ソケットでサポートされているソケット・オプションのセットを返します。
    String toString()
    このソケットの実装アドレスと実装ポートをStringとして返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • ServerSocket

      protected ServerSocket​(SocketImpl impl)
      ユーザー指定のSocketImplでサーバー・ソケットを作成します。
      パラメータ:
      impl - ServerSocketで使用するSocketImplのインスタンス。
      例外:
      NullPointerException - implがnullの場合。
      SecurityException - セキュリティ・マネージャが設定されていて、そのcheckPermissionメソッドがNetPermission("setSocketImpl")を許可していない場合。
      導入されたバージョン:
      12
    • ServerSocket

      public ServerSocket() throws IOException
      アンバウンドのサーバー・ソケットを作成します。
      例外:
      IOException−ソケットを開くときの入出力エラー。
    • ServerSocket

      public ServerSocket​(int port) throws IOException
      指定されたポートにバインドされたサーバー・ソケットを作成します。 ポート番号0は、そのポート番号が自動的に(通常は一時ポート範囲から)割り当てられたことを意味します。 このポート番号を取得するには、getLocalPortを呼び出します。

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

      アプリケーションがサーバー・ソケット実装ファクトリを指定している場合、そのファクトリcreateSocketImplメソッドが呼び出されて実際のソケット実装が作成されます。 そうでない場合は、システムにデフォルトのソケット実装が作成されます。

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

      パラメータ:
      port - ポート番号、または自動的に割り当てられたポート番号を使用する場合は0
      例外:
      IOException - ソケットを開いているときに入出力エラーが発生した場合。
      SecurityException - セキュリティ・マネージャが存在し、そのcheckListenメソッドでこの操作が許可されていない場合。
      IllegalArgumentException - portパラメータが指定された有効なポート値の範囲(0から65535)外である場合。
      関連項目:
      SocketImpl, SocketImplFactory.createSocketImpl(), setSocketFactory(java.net.SocketImplFactory), SecurityManager.checkListen(int)
    • ServerSocket

      public ServerSocket​(int port, int backlog) throws IOException
      サーバー・ソケットを作成し、指定されたローカル・ポート番号にバインドし、指定されたバックログを設定します。 ポート番号0は、そのポート番号が自動的に(通常は一時ポート範囲から)割り当てられたことを意味します。 このポート番号を取得するには、getLocalPortを呼び出します。

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

      アプリケーションがサーバー・ソケット実装ファクトリを指定している場合、そのファクトリcreateSocketImplメソッドが呼び出されて実際のソケット実装が作成されます。 そうでない場合は、システムにデフォルトのソケット実装が作成されます。

      セキュリティ・マネージャが存在する場合、この操作が許可されるように、そのcheckListenメソッドがport引数をその引数として指定して呼び出されます。 この結果、SecurityExceptionがスローされることがあります。 backlog引数は、ソケットの保留されている接続の要求された最大数です。 正確なセマンティックスは実装に固有です。 特に、実装には最大長がかかる場合や、パラメータをすべて無視することを選択できる場合があります。 指定される値は0より大きくなければいけません。 0以下の場合は、実装固有のデフォルトが使用されます。

      パラメータ:
      port - ポート番号、または自動的に割り当てられたポート番号を使用する場合は0
      backlog - 着信接続のキューの要求された最大長。
      例外:
      IOException - ソケットを開いているときに入出力エラーが発生した場合。
      SecurityException - セキュリティ・マネージャが存在し、そのcheckListenメソッドでこの操作が許可されていない場合。
      IllegalArgumentException - portパラメータが指定された有効なポート値の範囲(0から65535)外である場合。
      関連項目:
      SocketImpl, SocketImplFactory.createSocketImpl(), setSocketFactory(java.net.SocketImplFactory), SecurityManager.checkListen(int)
    • ServerSocket

      public ServerSocket​(int port, int backlog, InetAddress bindAddr) throws IOException
      指定されたポート、待機バックログ、およびバインド先のローカルIPアドレスを使ってサーバーを作成します。 複数ホームのホストの場合は、bindAddr引数を使用すれば、特定のアドレスに対する接続要求だけを受信するServerSocketを作成できます。 bindAddrがnullの場合、これはデフォルトで、任意の(すべての)ローカル・アドレス上の接続を受け入れます。 ポートは0から65535まででなければいけません。 ポート番号0は、そのポート番号が自動的に(通常は一時ポート範囲から)割り当てられたことを意味します。 このポート番号を取得するには、getLocalPortを呼び出します。

      セキュリティ・マネージャが存在する場合、このメソッドによってそのcheckListenメソッドがport引数をその引数として指定して呼び出され、この操作が許可されるかどうかが確認されます。 この結果、SecurityExceptionがスローされることがあります。 backlog引数は、ソケットの保留されている接続の要求された最大数です。 正確なセマンティックスは実装に固有です。 特に、実装には最大長がかかる場合や、パラメータをすべて無視することを選択できる場合があります。 指定される値は0より大きくなければいけません。 0以下の場合は、実装固有のデフォルトが使用されます。

      パラメータ:
      port - ポート番号、または自動的に割り当てられたポート番号を使用する場合は0
      backlog - 着信接続のキューの要求された最大長。
      bindAddr−サーバーをバインドするローカルInetAddress
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckListenメソッドでこの操作が許可されていない場合。
      IOException - ソケットを開いているときに入出力エラーが発生した場合。
      IllegalArgumentException - portパラメータが指定された有効なポート値の範囲(0から65535)外である場合。
      導入されたバージョン:
      1.1
      関連項目:
      SocketOptions, SocketImpl, SecurityManager.checkListen(int)
  • メソッドの詳細

    • bind

      public void bind​(SocketAddress endpoint) throws IOException
      ServerSocketを特定のアドレス(IPアドレスおよびポート番号)にバインドします。

      アドレスがnullの場合は、システムにより一時的なポートと有効なローカル・アドレスが選択されてソケットがバインドされます。

      パラメータ:
      endpoint - バインド先のIPアドレスおよびポート番号。
      例外:
      IOException - バインド操作に失敗した場合、あるいはソケットがすでにバインドされている場合。
      SecurityException - SecurityManagerが存在し、そのcheckListenメソッドがこの操作を許可しない場合。
      IllegalArgumentException - 端点が、このソケットによってサポートされていないSocketAddressサブクラスである場合。
      導入されたバージョン:
      1.4
    • bind

      public void bind​(SocketAddress endpoint, int backlog) throws IOException
      ServerSocketを特定のアドレス(IPアドレスおよびポート番号)にバインドします。

      アドレスがnullの場合は、システムにより一時的なポートと有効なローカル・アドレスが選択されてソケットがバインドされます。

      backlog引数は、ソケットの保留されている接続の要求された最大数です。 正確なセマンティックスは実装に固有です。 特に、実装には最大長がかかる場合や、パラメータをすべて無視することを選択できる場合があります。 指定される値は0より大きくなければいけません。 0以下の場合は、実装固有のデフォルトが使用されます。

      パラメータ:
      endpoint - バインド先のIPアドレスおよびポート番号。
      backlog - 着信接続のキューの要求された最大長。
      例外:
      IOException - バインド操作に失敗した場合、あるいはソケットがすでにバインドされている場合。
      SecurityException - SecurityManagerが存在し、そのcheckListenメソッドがこの操作を許可しない場合。
      IllegalArgumentException - 端点が、このソケットによってサポートされていないSocketAddressサブクラスである場合。
      導入されたバージョン:
      1.4
    • getInetAddress

      public InetAddress getInetAddress()
      このサーバー・ソケットのローカル・アドレスを返します。

      ソケットが閉じられる前にバインドされていた場合、このメソッドはソケットが閉じられたあとも引き続きローカル・アドレスを返します。

      セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャのcheckConnectメソッドがローカル・アドレスおよび-1を引数として呼び出され、操作が許可されるかどうかが確認されます。 この操作が許可されない場合は、ループバック・アドレスが返されます。

      戻り値:
      このソケットのバインド先アドレス。セキュリティ・マネージャによって拒否された場合はループバック・アドレス。ソケットがバインドされていない場合はnull
      関連項目:
      SecurityManager.checkConnect(java.lang.String, int)
    • getLocalPort

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

      ソケットが閉じられる前にバインドされていた場合、このメソッドはソケットが閉じられたあとも引き続きポート番号を返します。

      戻り値:
      このソケットが待機するポート番号。ソケットがまだバインドされていない場合は -1。
    • getLocalSocketAddress

      public SocketAddress getLocalSocketAddress()
      このソケットのバインド先の端点のアドレスを返します。

      ソケットが閉じられる前にバインドされていた場合、このメソッドはソケットが閉じられたあとも引き続き端点のアドレスを返します。

      セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャのcheckConnectメソッドがローカル・アドレスおよび-1を引数として呼び出され、操作が許可されるかどうかが確認されます。 この操作が許可されない場合は、ループバック・アドレスを表すSocketAddressと、ソケットのバインド先であるローカル・ポートが返されます。

      戻り値:
      このソケットのローカル端点を表すSocketAddress。セキュリティ・マネージャによって拒否された場合はループバック・アドレスを表すSocketAddress。ソケットがまだバインドされていない場合はnull
      導入されたバージョン:
      1.4
      関連項目:
      getInetAddress(), getLocalPort(), bind(SocketAddress), SecurityManager.checkConnect(java.lang.String, int)
    • accept

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

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

      実装上のノート:
      システム・デフォルトSocketImplを使用するこのクラスのインスタンスは、「クライアント・ソケット実装ファクトリ」が設定されている場合、「クライアント・ソケット実装ファクトリ」に関係なく、同じ型のSocketImplを使用したソケットを受け入れます。
      戻り値:
      新しいソケット
      例外:
      IOException - 接続の待機中に入出力エラーが発生した場合。
      SecurityException - セキュリティ・マネージャが存在し、そのcheckAcceptメソッドでこの操作が許可されていない場合。
      SocketTimeoutException−以前にsetSoTimeoutを使ってタイム・アウトが設定されていて、そのタイム・アウトに達した場合。
      IllegalBlockingModeException−このソケットに関連するチャネルが存在し、そのチャネルが非ブロッキング・モードであり、受け入れ準備の整った接続が存在しない場合
      関連項目:
      SecurityManager.checkAccept(java.lang.String, int)
    • implAccept

      protected final void implAccept​(Socket s) throws IOException
      ServerSocketのサブクラスは、このメソッドを使ってaccept()をオーバーライドすることで、独自のサブクラスのソケットが返されるようにします。 そのため、通常、FooServerSocketではこのメソッドを新しく作成された、バインドされていない、FooSocketが使用します。 implAcceptから戻ると、そのFooSocketがクライアントに接続されます。

      このメソッドの動作は、新しく作成およびバインドされていないソケットを使用して呼び出された場合は未指定です。 このメソッドを呼び出す前に指定されたソケットに設定されたソケット・オプションは、接続が受け入れられるときに保持される場合と保持されない場合があります。 このソケットに1つの型のSocketImplがあり、指定されたソケットにまったく別の型のSocketImplがある場合は、接続を受け入れることができない可能性があります。

      実装上のノート:
      システム・デフォルトSocketImplを使用したこのクラスのインスタンスは、同じタイプのSocketImplを使用したソケットとの接続を受け入れることができます: IOExceptionは、ソケットがカスタムSocketImplを使用している場合にスローされます。 カスタムSocketImplを使用するこのクラスのインスタンスは、システム・デフォルトのSocketImplを使用したソケットとの接続を受け付けることはできません。
      パラメータ:
      s−ソケット
      例外:
      IllegalBlockingModeException - このソケットに関連するチャネルが存在し、そのチャネルが非ブロック・モードである場合。
      IOException - 接続の待機時にI/Oエラーが発生した場合、またはこのソケットが指定されたソケットとの接続を受け入れることができない場合。
      導入されたバージョン:
      1.1
    • close

      public void close() throws IOException
      このソケットを閉じます。 accept()で現在ブロックされているすべてのスレッドがSocketExceptionをスローします。

      このソケットに関連するチャネルが存在する場合は、そのチャネルも閉じられます。

      定義:
      close、インタフェース: AutoCloseable
      定義:
      close、インタフェース: Closeable
      例外:
      IOException - ソケットを閉じるときに入出力エラーが発生した場合。
    • getChannel

      public ServerSocketChannel getChannel()
      このソケットに関連付けられた一意のServerSocketChannelオブジェクトを返します(存在する場合)。

      チャネル自体がServerSocketChannel.openメソッドを使用して作成された場合にだけ、サーバー・ソケットにチャネルが存在します。

      戻り値:
      このソケットに関連付けられたサーバー・ソケット・チャネル。このソケットがチャネル用に作成されたものでない場合はnull
      導入されたバージョン:
      1.4
    • isBound

      public boolean isBound()
      ServerSocketのバインディング状態を返します。

      ソケットがclosedとなる前にバインドされていた場合、このメソッドはソケットが閉じられた後も引き続きtrueを返します。

      戻り値:
      ServerSocketが正常にアドレスにバインドされている場合はtrue
      導入されたバージョン:
      1.4
    • isClosed

      public boolean isClosed()
      ServerSocketの閉じた状態を返します。
      戻り値:
      ソケットが閉じた場合はtrue
      導入されたバージョン:
      1.4
    • setSoTimeout

      public void setSoTimeout​(int timeout) throws SocketException
      指定されたタイムアウト(ミリ秒)を使ってSO_TIMEOUTを有効または無効にします。 このオプションを正のタイムアウト値に設定すると、このServerSocketに対するaccept()の呼出しは、この時間だけブロックされます。 タイム・アウトの期限が切れると、ServerSocketがまだ有効であってもjava.net.SocketTimeoutExceptionが発行されます。 タイム・アウト0は無限のタイム・アウトとして解釈されます。 このオプションは、ブロック処理に入る前に有効にしておく必要があります
      パラメータ:
      timeout−ミリ秒で表される、指定されたタイム・アウト
      例外:
      SocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合
      IllegalArgumentException - timeoutが負の値の場合
      導入されたバージョン:
      1.1
      関連項目:
      getSoTimeout()
    • getSoTimeout

      public int getSoTimeout() throws IOException
      Retrieve setting for SO_TIMEOUT.このオプションが無効(タイム・アウトが無限)の場合は0を返します。
      戻り値:
      SO_TIMEOUT
      例外:
      IOException - 入出力エラーが発生した場合
      導入されたバージョン:
      1.1
      関連項目:
      setSoTimeout(int)
    • setReuseAddress

      public void setReuseAddress​(boolean on) throws SocketException
      SO_REUSEADDRソケット・オプションを有効または無効にします。

      TCP接続をクローズする場合、接続クローズ後の一定期間、その接続がタイム・アウト状態(通常、TIME_WAIT状態または2MSL待機状態と呼ばれる)にとどまる可能性があります。 既知のソケット・アドレスまたはポートを使用するアプリケーションの場合、ソケット・アドレスまたはポートに関連する接続がタイム・アウト状態にあると、ソケットを必要なSocketAddressにバインドできないことがあります。

      bind(SocketAddress)を使用してソケットをバインドする前にSO_REUSEADDRを有効にすると、以前の接続がタイムアウト状態でもソケットをバインドできます。

      ServerSocketが作成されるときに、SO_REUSEADDRの初期設定は定義されていません。 アプリケーションはgetReuseAddress()を使用して、SO_REUSEADDRの初期設定を確認できます。

      ソケットがバインドされた(isBound()を参照)後でSO_REUSEADDRを有効または無効にする場合の動作は定義されていません。

      パラメータ:
      on - ソケット・オプションを有効にするか無効にするかを指定
      例外:
      SocketException - SO_REUSEADDRソケット・オプションの有効化または無効化時にエラーが発生した場合、またはソケットがクローズされている場合。
      導入されたバージョン:
      1.4
      関連項目:
      getReuseAddress(), bind(SocketAddress), isBound(), isClosed()
    • getReuseAddress

      public boolean getReuseAddress() throws SocketException
      SO_REUSEADDRが有効かどうかを調べます。
      戻り値:
      SO_REUSEADDRが有効かどうかを示すboolean値。
      例外:
      SocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
      導入されたバージョン:
      1.4
      関連項目:
      setReuseAddress(boolean)
    • toString

      public String toString()
      このソケットの実装アドレスと実装ポートをStringとして返します。

      セキュリティ・マネージャ・セットがあり、このソケットがboundである場合、checkConnectメソッドはローカル・アドレスでコールされ、操作が許可されるかどうかを確認するための引数として-1がコールされます。 この操作が許可されない場合は、ループバック・アドレスを表すInetAddressが実装アドレスとして返されます。

      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      このソケットの文字列表現。
    • setSocketFactory

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

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

      このメソッドにnullを渡しても、ファクトリがすでに設定されていないかぎり、それは無操作になります。

      セキュリティ・マネージャが存在する場合、この操作が許可されるように、このメソッドは最初にセキュリティ・マネージャのcheckSetFactoryメソッドを呼び出します。 この結果、SecurityExceptionがスローされることがあります。

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

      public void setReceiveBufferSize​(int size) throws SocketException
      このServerSocketから受け入れられたソケットのSO_RCVBUFオプションのデフォルト推奨値を設定します。 受け入れられたソケット内に実際に設定されている値を確認してください。それには、accept()からソケットが返されてからSocket.getReceiveBufferSize()を呼び出します。

      SO_RCVBUFの値は、内部ソケット受信バッファのサイズを設定するためと、リモート・ピアに通知されるTCP受信ウィンドウのサイズを設定するために使用されます。

      その後、Socket.setReceiveBufferSize(int)を呼び出すことで値を変更できます。 ただし、アプリケーションがRFC1323で定義されている64Kバイトを超える受信ウィンドウを使用可能にする必要がある場合には、ローカル・アドレスにバインドする前に推奨値をServerSocketで設定する必要があります。 つまり、引数なしコンストラクタを使ってServerSocketを作成し、次にsetReceiveBufferSize()を呼び出し、最後にbind()を呼び出してServerSocketをアドレスにバインドする必要があることを意味します。

      これに失敗してもエラーは発生せず、バッファ・サイズは要求された値に設定されます。ただし、このServerSocketから受け取るソケットのTCP受信ウィンドウは64Kバイト以下になります。

      パラメータ:
      size - 受信バッファ・サイズの設定サイズ。 この値は0より大きくなければならない。
      例外:
      SocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
      IllegalArgumentException - 値が0または負の値である場合。
      導入されたバージョン:
      1.4
      関連項目:
      getReceiveBufferSize()
    • getReceiveBufferSize

      public int getReceiveBufferSize() throws SocketException
      このServerSocketで使われるSO_RCVBUFオプションの値を取得します。これは、このServerSocketから受け取るソケットに使用される推奨バッファ・サイズです。

      受け入れたソケットに実際に設定された値は、Socket.getReceiveBufferSize()を呼び出して判定することに注意してください。

      戻り値:
      このSocketSO_RCVBUFオプションの値。
      例外:
      SocketException - 使用しているプロトコルでエラー(TCPエラーなど)が発生した場合。
      導入されたバージョン:
      1.4
      関連項目:
      setReceiveBufferSize(int)
    • setPerformancePreferences

      public void setPerformancePreferences​(int connectionTime, int latency, int bandwidth)
      このServerSocketのパフォーマンス設定を行います。

      ソケットはデフォルトで、TCP/IPプロトコルを使用します。 実装によっては、TCP/IPとは異なるパフォーマンス特性を持つ代替プロトコルを提供することもあります。 アプリケーションは、このメソッドを使用することで、実装で利用可能なプロトコルの選択時に、これらのかね合いの取り方を示す独自の設定を表現できます。

      パフォーマンス設定は、接続時間の短さ、応答時間の速さ、および帯域幅の広さの相対的な重要度を示す3つの整数値によって記述されます。 これらの整数の絶対値は重要ではありません。ある特定のプロトコルを選択するために、これらの値が単純に比較されますが、その際、値が大きければより強い設定を示します。 たとえば、アプリケーションが応答時間の速さや帯域幅の広さよりも接続時間の短さを優先する場合には、値(1, 0, 0)を指定してこのメソッドを呼び出すことができます。 アプリケーションが応答時間の速さよりも帯域幅の広さを優先し、接続時間の短さよりも応答時間の速さを優先する場合には、値(0, 1, 2)を指定してこのメソッドを呼び出すことができます。

      このソケットのバインド後にこのメソッドを呼び出しても、何の効果もありません。 つまり、この機能を使用するには、引数なしコンストラクタでソケットを作成する必要があります。

      パラメータ:
      connectionTime - 接続時間の短さの相対的な重要度を表すint
      latency - 応答時間の速さの相対的な重要度を表すint
      bandwidth - 帯域幅の広さの相対的な重要度を表すint
      導入されたバージョン:
      1.5
    • setOption

      public <T> ServerSocket setOption​(SocketOption<T> name, T value) throws IOException
      ソケット・オプションの値を設定します。
      型パラメータ:
      T - ソケット・オプション値のタイプ
      パラメータ:
      name - ソケット・オプション
      value - ソケット・オプションの値。 nullの値は、一部のオプションで有効です。
      戻り値:
      このServerSocket
      例外:
      UnsupportedOperationException - サーバー・ソケットがオプションをサポートしていない場合。
      IllegalArgumentException - 値がオプションに対して有効でない場合。
      IOException - I/Oエラーが発生した場合、またはソケットが閉じられている場合。
      NullPointerException - nameがnullの場合
      SecurityException - セキュリティ・マネージャが設定されていて、ソケット・オプションにセキュリティ許可が必要で、呼び出し元に必要な許可がない場合。 StandardSocketOptionsはセキュリティ権限を必要としません。
      導入されたバージョン:
      9
    • getOption

      public <T> T getOption​(SocketOption<T> name) throws IOException
      ソケット・オプションの値を返します。
      型パラメータ:
      T - ソケット・オプション値のタイプ
      パラメータ:
      name - ソケット・オプション
      戻り値:
      ソケット・オプションの値。
      例外:
      UnsupportedOperationException - サーバー・ソケットがオプションをサポートしていない場合。
      IOException - I/Oエラーが発生した場合、またはソケットが閉じられている場合。
      NullPointerException - nameがnullの場合
      SecurityException - セキュリティ・マネージャが設定されていて、ソケット・オプションにセキュリティ許可が必要で、呼び出し元に必要な許可がない場合。 StandardSocketOptionsはセキュリティ権限を必要としません。
      導入されたバージョン:
      9
    • supportedOptions

      public Set<SocketOption<?>> supportedOptions()
      このサーバー・ソケットでサポートされているソケット・オプションのセットを返します。 このメソッドは、ソケットが閉じられた後も引き続き一連のオプションを返します。
      戻り値:
      このソケットでサポートされているソケット・オプションのセット。 ソケットSocketImplを作成できない場合、このセットは空の場合があります。
      導入されたバージョン:
      9