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

クラスServerSocket

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

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

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

    導入されたバージョン:
    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として返します。
    • コンストラクタの詳細

      • ServerSocket

        protected ServerSocket​(SocketImpl impl)
        ユーザー指定のSocketImplでサーバー・ソケットを作成します。
        パラメータ:
        impl - ServerSocketで使用するSocketImplのインスタンス。
        例外:
        NullPointerException - implがnullの場合。
        導入されたバージョン:
        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がスローされることがあります。

        戻り値:
        新しいソケット
        例外:
        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がクライアントに接続されます。
        パラメータ:
        s−ソケット
        例外:
        IllegalBlockingModeException - このソケットに関連するチャネルが存在し、そのチャネルが非ブロック・モードである場合。
        IOException - 接続の待機中に入出力エラーが発生した場合。
        導入されたバージョン:
        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のバインディング状態を返します。
        戻り値:
        ServerSocketが正常にアドレスにバインドされている場合はtrue
        導入されたバージョン:
        1.4
      • isClosed

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

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

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

        セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャの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