CAsyncSocket::SetSockOpt
ソケットのオプションを設定するには、このメンバー関数を呼び出します。
BOOL SetSockOpt(
int nOptionName,
const void* lpOptionValue,
int nOptionLen,
int nLevel = SOL_SOCKET
);
パラメーター
nOptionName
値がに設定されているソケットのオプション。lpOptionValue
要求されたオプションの値が指定されたバッファーへのポインター。nOptionLen
バイト lpOptionValue バッファーのサイズ。nLevel
オプションが定義されているレベル; 唯一のサポート レベルは SOL_SOCKET と IPPROTO_TCPです。
戻り値
関数が正常に終了した場合は、; は 0 と特定のエラー コードは GetLastErrorを呼び出して取得できます。このエラーは、次のメンバー関数に適用されます:
WSANOTINITIALISED は正常に AfxSocketInit は、この API を使用する前に行う必要があります。
WSAENETDOWN は、Windows ソケット実装ネットワークのサブシステムが失敗したことを検出しました。
WSAEFAULT lpOptionValue はプロセス アドレス空間の有効な部分にありません。
WSAEINPROGRESS A のブロックの Windows ソケット処理は進行中です。
WSAEINVAL nLevel が無効であるか、または lpOptionValue の情報が無効です。
WSAENETRESET の接続は SO_KEEPALIVE が設定されている時刻が The operation has timed out
WSAENOPROTOOPT オプションは、未知またはサポートされていません。特に、SO_BROADCAST は、型 SOCK_STREAMソケットで SO_DONTLINGER、SO_KEEPALIVE、SO_LINGERと SO_OOBINLINE は、型 SOCK_DGRAMソケットでサポートされていませんが、サポートされていません。
WSAENOTCONN の接続は SO_KEEPALIVE が設定されているときにリセットされます。
WSAENOTSOCK は記述子ソケットではありません。
解説
SetSockOpt は任意の状態に任意の型のソケットに関連付けられたソケットのオプションの現在の値を設定します。オプションを複数のプロトコルのレベルにあるできますが、この指定はありません優位のソケット「」のレベルにある選択項目だけを定義します。ソケットがブロードキャスト メッセージで送信できるかどうかを転送されたデータが通常のデータ ストリームで受け取るかどうかなどに関するオプションの影響のソケット処理します。
ソケットのオプションの 2 種類があります: 機能や動作を有効または無効にするブール型の整数値を要求または構成するオプション、およびオプション。ブール型の選択を有効にするには、ゼロ以外の整数への lpOptionValue のポインター。ゼロに等しい整数への選択 lpOptionValue の点を無効にする場合は。nOptionLen はブール型のオプションの sizeof(BOOL) と等しくする必要があります。オプションの各値を含む構造体または整数への他の選択、lpOptionValue のをポイントし、を nOptionLen には整数または構造体の長さです。
SO_LINGER は送付されていないデータがソケットで列を行い、ソケットを閉じるに [閉じる] 関数が呼び出されると実行されるアクションを制御します。
既定では、ソケットは既に使用されているローカル アドレスに [バインド] (を参照) バインドできません。ただし」、アドレスを再利用することで、このように「望ましいこともあります。任意の接続がローカル、リモート アドレスの組み合わせによって区別されるため、リモート アドレスが異なっている限り、同じローカル アドレスにバインドされる 2 種類のソケットを持つように問題はありません。
目的のアドレスが既に別のソケットで使用されているため、ソケット [バインド] の呼び出しが拒否されることはありません。Windows ソケットの実装を通知するために、アプリケーションでは [バインド] の呼び出しを実行する前に、ソケットの SO_REUSEADDR ソケットのオプションを設定する必要があります。オプションを [バインド] が呼び出されたときにのみ解釈されることに注意してください: したがって既存のアドレスにバインドされる [バインド] の呼び出しの後でオプションを設定するか、またはリセットできます。これは、またはそのほかのソケットには影響がありませんソケットのオプションを設定する必要はありません (ただし無害) です。
アプリケーションは、Windows ソケットの実装が SO_KEEPALIVE ソケットのオプションをクリックすることによって制御伝送 Protocol (TCP) の接続「」キープアライブ パケットの使用を有効にするように要求できます。Windows ソケットの実装はキープアライブの使用をサポートする必要はありません: これは、RFC 1122 の場合は、4.2.3.6 を一度に、正確な意味が実装固有で、同期させる必要があります: 「インターネット ホスト—通信レイヤーの要件」。接続が切断」「キープアライブの結果エラー コード WSAENETRESET は、ソケット処理中のすべての呼び出しに戻り、以降も WSAENOTCONNと失敗します。
TCP_NODELAY のオプションは、Nagle アルゴリズムを無効にします。Nagle アルゴリズムが認められていないバッファーのデータを送信してホストによって送信される小さいパケットの数を減らすために使用されます。大きいパケットが送信されるまで。ただし、あるアプリケーションでは、このアルゴリズムのパフォーマンスに影響を及ぼすことがあります TCP_NODELAY とそれをオフにすることができます。アプリケーションの作成者は TCP_NODELAY を設定すると、ネットワーク パフォーマンスが大幅に低下を招きます持つことができるため、その操作の影響を十分理解され、必要な場合 TCP_NODELAY を設定することはできません。TCP_NODELAY はレベル IPPROTO_TCPを使用する唯一の方法はありません;ソケットのサポート 他のすべてのオプション使用 SOL_SOCKETレベル。
SO_DEBUG のオプションがアプリケーションによって設定される Windows ソケット指定の出力のデバッグ情報の実装。
次のオプションは SetSockOptでサポートされています。型は lpOptionValueによってアドレス データの種類を識別します。
値 |
型 |
説明 |
---|---|---|
SO_BROADCAST |
BOOL |
ソケット ブロードキャスト割り当てメッセージの伝達。 |
SO_DEBUG |
BOOL |
デバッグ情報を記録します。 |
SO_DONTLINGER |
BOOL |
送信される送付されていないデータを待っている [閉じる] をブロックします。このオプションを設定すると、l_onoff の SO_LINGER の配置と同じゼロに設定です。 |
SO_DONTROUTE |
BOOL |
で起こるする: インターフェイスに直接送信します。 |
SO_KEEPALIVE |
BOOL |
キープアライブを送信します。 |
SO_LINGER |
構造体は長びきます |
送付されていないデータがある場合は [閉じる] で長またはていないされます。 |
SO_OOBINLINE |
BOOL |
通常のデータ ストリームの帯域外のデータを受信します。 |
SO_RCVBUF |
int |
バッファー サイズを受け取ります指定します。 |
SO_REUSEADDR |
BOOL |
ソケットが既に使用されているアドレスにバインドされるようにします。( [バインド]を参照してください)。 |
SO_SNDBUF |
int |
送信に対してバッファー サイズを指定します。 |
TCP_NODELAY |
BOOL |
送信結合用の Nagle アルゴリズムを無効にします。 |
SetSockOpt でサポートされていない Berkeley Software Distribution (BSD) のオプションは次のとおりです:
値 |
型 |
説明 |
---|---|---|
SO_ACCEPTCONN |
BOOL |
ソケットで待機 |
SO_ERROR |
int |
エラー ステータスを取得し、オフにします。 |
SO_RCVLOWAT |
int |
干潮マークを受信します。 |
SO_RCVTIMEO |
int |
タイムアウトを受信する。 |
SO_SNDLOWAT |
int |
干潮マークを送信します。 |
SO_SNDTIMEO |
int |
タイムアウトを送信します。 |
SO_TYPE |
int |
ソケットの型。 |
IP_OPTIONS |
|
IP のヘッダーのオプション"フィールドを設定します。 |
必要条件
Header: afxsock.h