public class SctpStandardSocketOptions extends Object
修飾子と型 | クラスと説明 |
---|---|
static class |
SctpStandardSocketOptions.InitMaxStreams
このクラスは、アソシエーションの初期化中にローカルエンドポイントで使用されるインバウンドまたはアウトバウンドストリームの最大数を設定するために使用されます。
|
修飾子と型 | フィールドと説明 |
---|---|
static SctpSocketOption<Boolean> |
SCTP_DISABLE_FRAGMENTS
メッセージの断片化を有効または無効にします。
|
static SctpSocketOption<Boolean> |
SCTP_EXPLICIT_COMPLETE
明示的なメッセージの完了を有効または無効にします。
|
static SctpSocketOption<Integer> |
SCTP_FRAGMENT_INTERLEAVE
断片化されたインターリーブによって、メッセージ受信者に対するメッセージの表現方法が制御されます。
|
static SctpSocketOption<SctpStandardSocketOptions.InitMaxStreams> |
SCTP_INIT_MAXSTREAMS
アソシエーションの初期化中にローカルエンドポイントで要求されるストリームの最大数。
|
static SctpSocketOption<Boolean> |
SCTP_NODELAY
Nagle に似たアルゴリズムを有効または無効にします。
|
static SctpSocketOption<SocketAddress> |
SCTP_PRIMARY_ADDR
ローカル SCTP スタックで、指定されたピアアドレスがアソシエーションプライマリとして使用されるように要求します。
|
static SctpSocketOption<SocketAddress> |
SCTP_SET_PEER_PRIMARY_ADDR
囲まれたアドレスがピアによってアソシエーションプライマリとしてマークされるように要求します。
|
static SctpSocketOption<Integer> |
SO_LINGER
閉じるときにデータが存在する場合は遅延します。
|
static SctpSocketOption<Integer> |
SO_RCVBUF
ソケット受信バッファーのサイズ。
|
static SctpSocketOption<Integer> |
SO_SNDBUF
ソケット送信バッファーのサイズ。
|
public static final SctpSocketOption<Boolean> SCTP_DISABLE_FRAGMENTS
このソケットオプションの値は、オプションが有効か無効かを示す Boolean
です。有効な場合、SCTP メッセージの断片化は実行されません。代わりに、送信されるメッセージが現在の PMTU サイズを超える場合、メッセージは送信されず、エラーがユーザーに示されます。
このオプションがサポートされるかどうかは、実装によって異なります。
public static final SctpSocketOption<Boolean> SCTP_EXPLICIT_COMPLETE
このソケットオプションの値は、オプションが有効か無効かを示す Boolean
です。このオプションが有効の場合、1 回のメッセージ送信のために send
メソッドが複数回呼び出される可能性があります。MessageInfo
の isComplete
パラメータは、最後の送信でのみ true
に設定して、メッセージが完了したことを示す必要があります。このオプションが無効の場合、個々の send
呼び出しは完了していると見なされます。
このオプションのデフォルト値は false
で、これはこのオプションが無効であることを示します。このオプションがサポートされるかどうかは、実装によって異なります。
public static final SctpSocketOption<Integer> SCTP_FRAGMENT_INTERLEAVE
SctpChannel
に影響を与えますが、SctpMultiChannel
は 3 つすべてのレベルに影響を受けます。
このオプションが取る値は Integer
です。設定できる値は 0
、1
、または 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
の場合は、同じアソシエーションからの別のストリームメッセージが次の受信から配信されるだけでなく、次の受信でほかのアソシエーションのメッセージが配信される可能性もあります。
このオプションがサポートされるかどうかは、実装によって異なります。
public static final SctpSocketOption<SctpStandardSocketOptions.InitMaxStreams> SCTP_INIT_MAXSTREAMS
このソケットオプションの値は InitMaxStreams
で、チャネル上のアソシエーションがサポートするように準備されるインバウンドおよびアウトバウンドストリームの最大数を表します。
SctpChannel
の場合、このオプションは、接続の前にインバウンド/アウトバウンドストリームの数を変更するためのみに使用できます。
SctpMultiChannel
の場合、このオプションは、チャネル上の新しいアソシエーション設定でサポートするように準備されるインバウンド/アウトバウンドストリームの最大数を決定します。
SctpServerChannel
の場合、このオプションは、受け入れられたソケットが接続ピアとネゴシエートするインバウンド/アウトバウンドストリームの最大数を決定します。
すべての場合で、このオプションによって設定される値は、チャネルのソケットにおける新しいアソシエーション設定のネゴシエーションで使用されます。ピアとネゴシエートされた実際のインバウンド/アウトバウンドストリームの最大数は、適切な Association
から取得できます。Association
は、そのアソシエーションに属している COMM_UP
AssociationChangeNotification
から取得できます。
この値は、実際の実装によって制限されます。つまり、ユーザーはオペレーティングシステムより多くのストリームをサポートできることがあります。そのような場合、オペレーティングシステムによる制限はユーザーが要求した値をオーバーライドする可能性があります。デフォルト値 0 は、エンドポイントのデフォルト値を使用することを示します。
public static final SctpSocketOption<Boolean> SCTP_NODELAY
このソケットオプションの値は、オプションが有効か無効かを示す Boolean
です。SCTP は、Nagle アルゴリズムのようなアルゴリズムを使用して、短いセグメントを合体し、ネットワークの効率性を向上します。
public static final SctpSocketOption<SocketAddress> SCTP_PRIMARY_ADDR
このソケットオプションの値は SocketAddress
で、ローカル SCTP スタックがアソシエーションプライマリとして使用すべきピアアドレスを表します。アドレスは、アソシエーションピアのいずれかのアドレスである必要があります。
SctpMultiChannel
は複数のアソシエーションを制御できます。このオプションを設定または取得する際には、アソシエーションパラメータを指定する必要があります。
SctpChannel
は 1 つのアソシエーションのみを制御するため、アソシエーションパラメータは必要なく、このオプションを直接設定または照会できます。
public static final SctpSocketOption<SocketAddress> SCTP_SET_PEER_PRIMARY_ADDR
このソケットオプションの値は SocketAddress
で、ピアがプライマリアドレスとして使用するローカルアドレスを表します。指定されたアドレスは、アソシエーションでローカルにバインドされたいずれかのアドレスである必要があります。
SctpMultiChannel
は複数のアソシエーションを制御できます。このオプションを設定または取得する際には、アソシエーションパラメータを指定する必要があります。
SctpChannel
は 1 つのアソシエーションのみを制御するため、アソシエーションパラメータは必要なく、このオプションを直接照会できます。
これは設定専用のオプションであり、getOption
によって取得できません。このオプションがサポートされるかどうかは、実装によって異なります。
public static final SctpSocketOption<Integer> SO_SNDBUF
このソケットオプションの値は、ソケット送信バッファーのサイズ (バイト) を表す Integer
です。ソケット送信バッファーとは、ネットワーク実装で使用される出力バッファーのことです。大規模な接続では、この値を増やさなければいけない可能性があります。このソケットオプションの値は、バッファーのサイズを合わせるための実装に対するヒントであり、実際のサイズは異なる場合があります。このソケットオプションを照会すれば実際のサイズを取得できます。
SctpChannel
の場合、これによって SCTP スタックが内部バッファーで送信を待機させているデータ量が制御されます。そのため、このオプションは、1 回の送信呼び出しで送信できるデータの最大サイズを制限します。
SctpMultiChannel
の場合、SctpChannel
と同じ効果ですが、すべてのアソシエーションに適用される点が異なります。このオプションは、各アソシエーションのウィンドウサイズに別々に適用されます。
実装では、ソケットのバインドまたは接続の前にこのソケットオプションを設定できます。ある実装で、ソケットのバインド後にソケット送信バッファーを変更できるかどうかは、システムに依存します。
public static final SctpSocketOption<Integer> SO_RCVBUF
このソケットオプションの値は、ソケット受信バッファーのサイズ (バイト) を表す Integer
です。ソケット受信バッファーとは、ネットワーク実装で使用される入力バッファーのことです。大規模な接続ではこの値を増やさなければいけない可能性があるほか、受信データの潜在的なバックログを制限するためにこの値を減らさなければいけない可能性もあります。このソケットオプションの値は、バッファーのサイズを合わせるための実装に対するヒントであり、実際のサイズは異なる場合があります。
SctpChannel
の場合、これによって受信側のウィンドウサイズが制御されます。
SctpMultiChannel
の場合、意味は実装に依存します。ソケット記述子にバインドされている各アソシエーションの受信バッファーを制御することもあれば、ソケット全体の受信バッファーを制御することもあります。
実装では、ソケットのバインドまたは接続の前にこのソケットオプションを設定できます。ある実装で、ソケットのバインド後にソケット受信バッファーを変更できるかどうかは、システムに依存します。
public static final SctpSocketOption<Integer> SO_LINGER
このソケットオプションの値は、未送信データがソケットのキューに入れられたり、ソケットを閉じるためのメソッドが呼び出されたりした場合に実行されるアクションを制御する Integer
です。ソケットオプションの値がゼロ以上の場合、その値は、遅延間隔と呼ばれるタイムアウト値 (秒) を表しています。遅延間隔とは、オペレーティングシステムが未送信データの送信を試みたりデータ送信が不可能であると判断したりする間に、close
メソッドがブロックするタイムアウトのことです。ソケットオプションの値がゼロより小さい場合、オプションは無効になります。その場合、close
メソッドは未送信データが送信されるまで待機しません。オペレーティングシステムは可能であれば、接続が閉じられる前にすべての未送信データを送信します。
このソケットオプションは、ブロック
モードで構成されているソケットのみで使用することを意図しています。非ブロックソケットでこのオプションを有効にした場合の close
メソッドの動作は、未定義となります。
このソケットオプションの初期値は、オプションが無効であることを意味する負の値になります。オプションの有効化や遅延間隔の変更は、いつでも行えます。遅延間隔の最大値はシステムに依存します。遅延間隔を最大値より大きな値に設定した場合、遅延間隔は最大値に設定されます。
Copyright © 2009, 2013, Oracle and/or its affiliates. All rights reserved.