- java.lang.Object
-
- com.sun.nio.sctp.SctpStandardSocketOptions
-
public class SctpStandardSocketOptions extends Object
SCTPチャネルでは、特定のチャネル・クラスに一覧表示されたソケット・オプションに加えて、このクラスで定義されたソケット・オプションもサポートされています。また、追加の実装固有のソケット・オプションがサポートされている場合もあります。- 導入されたバージョン:
- 1.7
-
-
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 クラス 説明 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
ソケット送信バッファのサイズ。
-
-
-
フィールドの詳細
-
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
メソッドが複数回呼び出される可能性があります。MessageInfo
のisComplete
パラメータは、最後の送信でのみtrue
に設定して、メッセージが完了したことを示す必要があります。 このオプションが無効の場合、個々のsend
呼出しは完了していると見なされます。このオプションのデフォルト値は
false
で、これはこのオプションが無効であることを示します。 このオプションがサポートされるかどうかは、実装によって異なります。
-
SCTP_FRAGMENT_INTERLEAVE
public static final SctpSocketOption<Integer> SCTP_FRAGMENT_INTERLEAVE
断片化されたインターリーブによって、メッセージ受信者に対するメッセージの表現方法が制御されます。 断片化のインターリーブは、3つのレベルが定義されています。 そのうち2つのレベルは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
の場合は、同じアソシエーションからの別のストリーム・メッセージが次の受信から配信されるだけでなく、次の受信でほかのアソシエーションのメッセージが配信される可能性もあります。このオプションがサポートされるかどうかは、実装によって異なります。
-
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
メソッドの動作は、未定義となります。このソケット・オプションの初期値は、オプションが無効であることを意味する負の値になります。 オプションの有効化や遅延間隔の変更は、いつでも行えます。 遅延間隔の最大値はシステムに依存します。 遅延間隔を最大値より大きな値に設定した場合、遅延間隔は最大値に設定されます。
-
-