モジュール jdk.sctp
パッケージ com.sun.nio.sctp

クラスSctpStandardSocketOptions



  • public class SctpStandardSocketOptions
    extends Object
    SCTPチャネルでは、特定のチャネル・クラスに一覧表示されたソケット・オプションに加えて、このクラスで定義されたソケット・オプションもサポートされています。また、追加の実装固有のソケット・オプションがサポートされている場合もあります。
    導入されたバージョン:
    1.7
    • フィールドの詳細

      • SCTP_DISABLE_FRAGMENTS

        public static final SctpSocketOption<Boolean> SCTP_DISABLE_FRAGMENTS
        メッセージの断片化を有効または無効にします。

        このソケット・オプションの値は、オプションが有効か無効かを示すBooleanです。 有効な場合、SCTPメッセージの断片化は実行されません。 代わりに、送信されるメッセージが現在のPMTUサイズを超える場合、メッセージは送信されず、エラーがユーザーに示されます。

        このオプションがサポートされるかどうかは、実装によって異なります。

      • SCTP_EXPLICIT_COMPLETE

        public static final SctpSocketOption<Boolean> SCTP_EXPLICIT_COMPLETE
        明示的なメッセージの完了を有効または無効にします。

        このソケット・オプションの値は、オプションが有効か無効かを示すBooleanです。 このオプションが有効の場合、1回のメッセージ送信のためにsendメソッドが複数回呼び出される可能性があります。 MessageInfoisCompleteパラメータは、最後の送信でのみtrueに設定して、メッセージが完了したことを示す必要があります。 このオプションが無効の場合、個々のsend呼出しは完了していると見なされます。

        このオプションのデフォルト値はfalseで、これはこのオプションが無効であることを示します。 このオプションがサポートされるかどうかは、実装によって異なります。

      • SCTP_FRAGMENT_INTERLEAVE

        public static final SctpSocketOption<Integer> SCTP_FRAGMENT_INTERLEAVE
        断片化されたインターリーブによって、メッセージ受信者に対するメッセージの表現方法が制御されます。 断片化のインターリーブは、3つのレベルが定義されています。 そのうち2つのレベルはSctpChannelに影響を与えますが、SctpMultiChannelは3つすべてのレベルに影響を受けます。

        このオプションが取る値はIntegerです。 設定できる値は01、または2です。

        3つのレベルを設定すると、受信側では次の相互作用があります。

        level 0 - あらゆるメッセージのインターリーブ化を防ぎます。 つまり、一部の配信が開始すると、部分的に配信されているメッセージを除き、その他のメッセージは受信されません。 別のメッセージが配信可能な別のストリーム(またはアソシエーション)に到着した場合、そのメッセージはブロックされ、部分的に配信されているメッセージのすべてをユーザーが読むまで待機します。

        level 1 - 別のアソシエーションからのメッセージのインターリーブ化を許可します。 SctpChannelは常に同じアソシエーションからのメッセージを受信するため、SctpChannelの場合、level 0とlevel 1は同じ意味です。 SctpMultiChannelをこのレベルに設定すると、異なるアソシエーションからの部分配信が複数発生する可能性がありますが、あるアソシエーションについて配信されるメッセージは、メッセージのすべての部分が配信されるまで1つのみです。 つまり大きなメッセージ1つをアソシエーション識別Xで読み込んでいる場合、アソシエーションXからのほかのメッセージの配信がブロックされます。

        level 2 - メッセージの完全なインターリーブ化を許可します。 このレベルでは、送信側がピアAssociationを慎重に監視するだけでなく、ストリーム番号にも慎重に注意を払う必要があります。 このオプションが有効な場合、部分的に配信されるメッセージはアソシエーション「X」のストリーム「Y」について配信を開始することができ、次の受信ではアソシエーション「X」のストリーム「Z」からのメッセージを返すことができます。 ストリーム「Y」の部分的に配信されたメッセージがすべて読まれるまで、アソシエーション「X」のストリーム「Y」のほかのメッセージは配信されません。 このオプションは、両方のチャネル・タイプに影響します。 また、SctpMultiChannelの場合は、同じアソシエーションからの別のストリーム・メッセージが次の受信から配信されるだけでなく、次の受信でほかのアソシエーションのメッセージが配信される可能性もあります。

        このオプションがサポートされるかどうかは、実装によって異なります。

      • SCTP_INIT_MAXSTREAMS

        public static final SctpSocketOption<SctpStandardSocketOptions.InitMaxStreams> SCTP_INIT_MAXSTREAMS
        アソシエーションの初期化中にローカル・エンドポイントで要求されるストリームの最大数。

        このソケット・オプションの値はInitMaxStreamsで、チャネル上のアソシエーションがサポートするように準備されるイン・バウンドおよびアウトバウンド・ストリームの最大数を表します。

        SctpChannelの場合、このオプションは、接続の前にイン・バウンド\/アウトバウンド・ストリームの数を変更するためのみに使用できます。

        SctpMultiChannelの場合、このオプションは、チャネル上の新しいアソシエーション設定でサポートするように準備されるイン・バウンド\/アウトバウンド・ストリームの最大数を決定します。

        SctpServerChannelの場合、このオプションは、受け入れられたソケットが接続ピアとネゴシエートするイン・バウンド\/アウトバウンド・ストリームの最大数を決定します。

        すべての場合で、このオプションによって設定される値は、チャネルのソケットにおける新しいアソシエーション設定のネゴシエーションで使用されます。ピアとネゴシエートされた実際のインバウンド/アウトバウンド・ストリームの最大数は、適切なAssociationから取得できます。 Associationは、そのアソシエーションに属しているCOMM_UP AssociationChangeNotificationから取得できます。

        この値は、実際の実装によって制限されます。 つまり、ユーザーはオペレーティング・システムより多くのストリームをサポートできることがあります。 そのような場合、オペレーティング・システムによる制限はユーザーが要求した値をオーバーライドする可能性があります。 デフォルト値0は、エンド・ポイントのデフォルト値を使用することを示します。

      • SCTP_NODELAY

        public static final SctpSocketOption<Boolean> SCTP_NODELAY
        Nagleに似たアルゴリズムを有効または無効にします。

        このソケット・オプションの値は、オプションが有効か無効かを示すBooleanです。 SCTPは、Nagleアルゴリズムのようなアルゴリズムを使用して、短いセグメントを合体し、ネットワークの効率性を向上します。

      • SCTP_PRIMARY_ADDR

        public static final SctpSocketOption<SocketAddress> SCTP_PRIMARY_ADDR
        ローカルSCTPスタックで、指定されたピア・アドレスがアソシエーション・プライマリとして使用されるように要求します。

        このソケット・オプションの値はSocketAddressで、ローカルSCTPスタックがアソシエーション・プライマリとして使用すべきピア・アドレスを表します。 アドレスは、アソシエーション・ピアのいずれかのアドレスである必要があります。

        SctpMultiChannelは複数のアソシエーションを制御できます。このオプションを設定または取得する際には、アソシエーション・パラメータを指定する必要があります。

        SctpChannelは1つのアソシエーションのみを制御するため、アソシエーション・パラメータは必要なく、このオプションを直接設定または照会できます。

      • SCTP_SET_PEER_PRIMARY_ADDR

        public static final SctpSocketOption<SocketAddress> SCTP_SET_PEER_PRIMARY_ADDR
        囲まれたアドレスがピアによってアソシエーション・プライマリとしてマークされるように要求します。

        このソケット・オプションの値はSocketAddressで、ピアがプライマリ・アドレスとして使用するローカル・アドレスを表します。 指定されたアドレスは、アソシエーションでローカルにバインドされたいずれかのアドレスである必要があります。

        SctpMultiChannelは複数のアソシエーションを制御できます。このオプションを設定または取得する際には、アソシエーション・パラメータを指定する必要があります。

        SctpChannelは1つのアソシエーションのみを制御するため、アソシエーション・パラメータは必要なく、このオプションを直接照会できます。

        これは設定専用のオプションであり、 getOptionによって取得できません。 このオプションがサポートされるかどうかは、実装によって異なります。

      • SO_SNDBUF

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

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

        SctpChannelの場合、これによってSCTPスタックが内部バッファで送信を待機させているデータ量が制御されます。 そのため、このオプションは、1回の送信呼出しで送信できるデータの最大サイズを制限します。

        SctpMultiChannelの場合、 SctpChannelと同じ効果ですが、すべてのアソシエーションに適用される点が異なります。 このオプションは、各アソシエーションのウィンドウ・サイズに別々に適用されます。

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

      • SO_RCVBUF

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

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

        SctpChannelの場合、これによって受信側のウィンドウ・サイズが制御されます。

        SctpMultiChannelの場合、意味は実装に依存します。 ソケット記述子にバインドされている各アソシエーションの受信バッファを制御することもあれば、ソケット全体の受信バッファを制御することもあります。

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

      • SO_LINGER

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

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

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

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