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

クラスStandardSocketOptions


  • public final class StandardSocketOptions
    extends Object
    標準ソケット・オプションを定義します。

    このクラスによって定義される各ソケット・オプションのnameは、フィールド名です。

    このリリースでは、ここで定義されるソケットオプションは、channelsパッケージ内のnetworkチャネルによって使用されます。

    導入されたバージョン:
    1.7
    • フィールドの詳細

      • SO_BROADCAST

        public static final SocketOption<Boolean> SO_BROADCAST
        ブロードキャスト・データグラムの転送を許可します。

        このソケット・オプションの値は、オプションが有効か無効かを示すBooleanです。 このオプションは、IPv4ブロードキャスト・アドレスに送信するデータグラム型ソケットに固有のものです。 ソケット・オプションが有効な場合、ソケットを使用してブロードキャスト・データグラムを送信できます。

        このソケット・オプションの初期値はFALSEです。 このソケット・オプションはいつでも有効または無効にできます。 一部のオペレーティング・システムでは、このオプションを有効するため、つまりブロードキャスト・データグラムを送信するために、実装固有の特権でJava仮想マシンを起動する必要があります。

        関連項目:
        RFC 919: Broadcasting Internet Datagrams, DatagramSocket.setBroadcast(boolean)
      • SO_KEEPALIVE

        public static final SocketOption<Boolean> SO_KEEPALIVE
        接続をキープアライブにします。

        このソケット・オプションの値は、オプションが有効か無効かを示すBooleanです。 SO_KEEPALIVEオプションが有効な場合、オペレーティング・システムは、そのままでは接続がアイドル状態になっているときに、キープアライブ・メカニズムを使用して、接続の他方の端を定期的にプローブすることがあります。 キープ・アライブ・メカニズムの正確なセマンティックスはシステムによって異なるため、未指定です。

        このソケット・オプションの初期値はFALSEです。 このソケット・オプションはいつでも有効または無効にできます。

        関連項目:
        RFC 1122 Requirements for Internet Hosts -- Communication Layers, Socket.setKeepAlive(boolean)
      • SO_SNDBUF

        public static final SocketOption<Integer> SO_SNDBUF
        ソケット送信バッファのサイズ。

        このソケット・オプションの値は、ソケット送信バッファのサイズ(バイト)を表すIntegerです。 ソケット送信バッファとは、ネットワーク実装で使用される出力バッファのことです。 大規模な接続では、この値を増やさなければいけない可能性があります。 このソケット・オプションの値は、バッファのサイズを合わせるための実装に対するヒントであり、実際のサイズは異なる場合があります。 このソケット・オプションを照会すれば実際のサイズを取得できます。

        データグラム型ソケットの場合、送信バッファのサイズのため、ソケットによって送信できるデータグラムのサイズが制限される場合があります。 バッファ・サイズより大きいデータグラムが送信されるか破棄されるかは、システムによって異なります。

        ソケットの送信バッファの初期/デフォルト・サイズや、許容される値の範囲は、システムによって異なります。ただし、負のサイズは許可されません。 ソケットの送信バッファを最大サイズより大きく設定しようとすると、バッファは最大サイズに設定されます。

        実装では、ソケットのバインドまたは接続の前にこのソケット・オプションを設定できます。 ある実装で、ソケットのバインド後にソケット送信バッファを変更できるかどうかは、システムに依存します。

        関連項目:
        Socket.setSendBufferSize(int)
      • SO_RCVBUF

        public static final SocketOption<Integer> SO_RCVBUF
        ソケット受信バッファのサイズ。

        このソケット・オプションの値は、ソケット受信バッファのサイズ(バイト)を表すIntegerです。 ソケット受信バッファとは、ネットワーク実装で使用される入力バッファのことです。 大規模な接続ではこの値を増やさなければいけない可能性があるほか、受信データの潜在的なバックログを制限するためにこの値を減らさなければいけない可能性もあります。 このソケット・オプションの値は、バッファのサイズを合わせるための実装に対するヒントであり、実際のサイズは異なる場合があります。

        データグラム型ソケットの場合、受信バッファのサイズのため、受信できるデータグラムのサイズが制限される場合があります。 バッファ・サイズより大きいデータグラムが受信されるかどうかは、システムによって異なります。 ソケットの受信バッファを増やすことは、データグラムが、処理できる速度より速くまとめて到着する場合には重要となることがあります。

        ストリーム型ソケットとTCP/IPプロトコルの場合、TCP受信ウィンドウのサイズをリモート・ピアに通知するときに、ソケットの受信バッファのサイズが使われることがあります。

        ソケットの受信バッファの初期/デフォルト・サイズや、許容される値の範囲は、システムによって異なります。ただし、負のサイズは許されません。 ソケットの受信バッファを最大サイズより大きく設定しようとすると、バッファは最大サイズに設定されます。

        実装では、ソケットのバインドまたは接続の前にこのソケット・オプションを設定できます。 ある実装で、ソケットのバインド後にソケット受信バッファを変更できるかどうかは、システムに依存します。

        関連項目:
        RFC 1323: TCP Extensions for High Performance, Socket.setReceiveBufferSize(int), ServerSocket.setReceiveBufferSize(int)
      • SO_REUSEADDR

        public static final SocketOption<Boolean> SO_REUSEADDR
        アドレスを再利用します。

        このソケット・オプションの値は、オプションが有効か無効かを示すBooleanです。 このソケット・オプションの正確なセマンティックスは、ソケットの型やシステムによって異なります。

        ストリーム型ソケットの場合、このソケット・オプションは通常、ソケット・アドレスに関連する前の接続がTIME_WAIT状態であるときに、そのソケット・アドレスにソケットをバインドできるかどうかを決定します。 セマンティックスが異なり、前の接続がこの状態にあるときにソケットをバインドするためにソケット・オプションが有効になっている必要がない実装では、このオプションが無視されることもあります。

        データグラム型ソケットの場合、ソケット・オプションは、複数のプログラムを同じアドレスにバインドできるようにするために使用されます。 このオプションは、ソケットをIP (Internet Protocol)マルチキャストに使う予定の場合は、有効にするべきです。

        実装では、ソケットのバインドまたは接続の前にこのソケット・オプションを設定できます。 ソケットがバインドされたあとにこのソケット・オプションの値を変更しても、何の効果もありません。 このソケット・オプションのデフォルト値はシステムによって異なります。

        関連項目:
        RFC 793: Transmission Control Protocol, ServerSocket.setReuseAddress(boolean)
      • SO_REUSEPORT

        public static final SocketOption<Boolean> SO_REUSEPORT
        ポートを再利用します。

        このソケット・オプションの値は、オプションが有効か無効かを示すBooleanです。 このソケット・オプションの正確なセマンティックスは、ソケットの型やシステムによって異なります。

        ストリーム指向のソケットの場合、このソケット・オプションは、通常、複数のリスニング・ソケットを同じアドレスと同じポートの両方にバインドすることを許可します。

        データグラム指向のソケットの場合、socketオプションは、通常、複数のUDPソケットを同じアドレスとポートにバインドすることを許可します。

        実装では、ソケットのバインドまたは接続の前にこのソケット・オプションを設定できます。 ソケットがバインドされたあとにこのソケット・オプションの値を変更しても、何の効果もありません。

        導入されたバージョン:
        9
      • SO_LINGER

        public static final SocketOption<Integer> SO_LINGER
        閉じるときにデータが存在する場合は遅延します。

        このソケット・オプションの値は、未送信データがソケットのキューに入れられたり、ソケットを閉じるためのメソッドが呼び出されたりした場合に実行されるアクションを制御するIntegerです。 ソケット・オプションの値がゼロ以上の場合、その値は、遅延間隔と呼ばれるタイム・アウト値(秒)を表しています。 遅延間隔とは、オペレーティング・システムが未送信データの送信を試みたりデータ送信が不可能であると判断したりする間に、closeメソッドがブロックするタイム・アウトのことです。 ソケット・オプションの値がゼロより小さい場合、オプションは無効になります。 その場合、closeメソッドは未送信データが送信されるまで待機しません。オペレーティング・システムは可能であれば、接続が閉じられる前にすべての未送信データを送信します。

        このソケット・オプションは、ブロック・モードで構成されているソケットのみで使用することを意図しています。 非ブロック・ソケットでこのオプションを有効にした場合のcloseメソッドの動作は、未定義となります。

        このソケット・オプションの初期値は、オプションが無効であることを意味する負の値になります。 オプションの有効化や遅延間隔の変更は、いつでも行えます。 遅延間隔の最大値はシステムに依存します。 遅延間隔を最大値より大きな値に設定した場合、遅延間隔は最大値に設定されます。

        関連項目:
        Socket.setSoLinger(boolean, int)
      • IP_TOS

        public static final SocketOption<Integer> IP_TOS
        IP (Internet Protocol)ヘッダーのサービス・タイプ(ToS)。

        このソケット・オプションの値は、ソケットによってIPv4ソケットに送信されるIPパケット内のToSオクテットの値を表すIntegerです。 ToSオクテットの解釈はネットワークによって異なり、このクラスでは定義されていません。 ToSオクテットの詳細については、RFC 1349RFC 2474を参照してください。 ソケット・オプションの値はヒントです。 実装が、値を無視する場合や、特定の値を無視する場合もあります。

        ToSオクテット内のTOSフィールドの初期/デフォルト値は実装によって異なりますが、一般的には0になります。 データグラム型ソケットの場合、ソケットがバインドされたあとはいつでもオプションを構成できます。 オクテットの新しい値は、後続のデータグラムを送信するときに使用されます。 ソケットのバインド前に、このオプションを照会または変更できるかどうかはシステムに依存します。

        ストリーム型ソケットまたはIPv6ソケットでのこのソケット・オプションの動作は、このリリースでは定義されていません。

        関連項目:
        DatagramSocket.setTrafficClass(int)
      • IP_MULTICAST_IF

        public static final SocketOption<NetworkInterface> IP_MULTICAST_IF
        IP (Internet Protocol)マルチキャスト・データグラムのネットワーク・インタフェース。

        このソケット・オプションの値は、データグラム型ソケットによって送信されるマルチキャスト・データグラムの送出インタフェースを表すNetworkInterfaceです。 IPv6ソケットの場合、このオプションを設定することで、IPv4アドレスに送信されるマルチキャスト・データグラムの送出インタフェースも設定されるかどうかはシステムによって異なります。

        このソケット・オプションの初期/デフォルト値は、通常はネットワーク・ルーティング表に基づいて、送出インタフェースがオペレーティング・システムによって選択されることを指定するnullである場合があります。 実装ではソケットのバインド後にこのソケット・オプションを設定できます。 ソケットのバインド前にソケット・オプションを照会または変更できるかどうかはシステムに依存します。

        関連項目:
        MulticastChannel, MulticastSocket.setInterface(java.net.InetAddress)
      • IP_MULTICAST_TTL

        public static final SocketOption<Integer> IP_MULTICAST_TTL
        IP (Internet Protocol)マルチキャスト・データグラムの有効期間

        このソケット・オプションの値はIntegerで、その範囲は0 <= 値 <= 255です。 これは、データグラム型ソケットによって送信されるマルチキャスト・データグラムの範囲を制御するために使用されます。 IPv4ソケットの場合、オプションは、ソケットによって送信されるマルチキャスト・データグラムでの有効期間(TTL)です。 TTLが0のデータグラムは、ネットワークでは転送されませんが、ローカルで転送されることがあります。 IPv6ソケットの場合、オプションは、ネットワーク上で期限が切れる前にデータグラムが通過することができるホップの数である、ホップ制限です。 IPv6ソケットの場合、IPv4アドレスに送信されるマルチキャスト・データグラムにも有効期間を設定するかどうかはシステムによって異なります。

        有効期間設定の初期/デフォルト値は、通常は1です。 実装ではソケットのバインド後にこのソケット・オプションを設定できます。 ソケットのバインド前にソケット・オプションを照会または変更できるかどうかはシステムに依存します。

        関連項目:
        MulticastChannel, MulticastSocket.setTimeToLive(int)
      • IP_MULTICAST_LOOP

        public static final SocketOption<Boolean> IP_MULTICAST_LOOP
        IP (Internet Protocol)マルチキャスト・データグラムのループ・バック。

        このソケット・オプションの値は、マルチキャスト・データグラムのループ・バックを制御するBooleanです。 ソケット・オプションの値は、オプションを有効にするかどうかを表します。

        このソケット・オプションの正確なセマンティックスは、システムによって異なります。 特に、ソケットから送信されたマルチキャスト・データグラムやソケットによって受信されたマルチキャスト・データグラムにループ・バックを適用するかどうかはシステムに依存します。 IPv6ソケットの場合、IPv4アドレスに送信されたマルチキャスト・データグラムにもオプションを適用するかどうかは、システムによって異なります。

        このソケット・オプションの初期/デフォルト値はTRUEです。 実装ではソケットのバインド後にこのソケット・オプションを設定できます。 ソケットのバインド前にソケット・オプションを照会または変更できるかどうかはシステムに依存します。

        関連項目:
        MulticastChannel, MulticastSocket.setLoopbackMode(boolean)
      • TCP_NODELAY

        public static final SocketOption<Boolean> TCP_NODELAY
        Nagleアルゴリズムを無効にします。

        このソケット・オプションの値は、オプションが有効か無効かを示すBooleanです。 ソケット・オプションは、TCP/IPプロトコルを使用するストリーム型ソケットに固有です。 TCP/IPはNagleアルゴリズムと呼ばれるアルゴリズムを使用して短いセグメントを合体させ、ネットワークの効率を向上させます。

        このソケット・オプションのデフォルト値はFALSEです。 ソケット・オプションは、合体がパフォーマンスに影響を与えることが分かっている場合にのみ有効にするべきです。 このソケット・オプションはいつでも有効にできます。 つまり、Nagleアルゴリズムを無効にできます。 いったんオプションを有効にして、あとでオプションを無効にできるかどうかはシステムによって異なります。 無効にできない場合は、オプションを無効にするsetOptionメソッドを呼び出しても効果がありません。

        関連項目:
        RFC 1122: Requirements for Internet Hosts -- Communication Layers, Socket.setTcpNoDelay(boolean)