CAsyncSocket::SetSockOpt

BOOL SetSockOpt ( int nOptionName, const void ※ lpOptionValue, int nOptionLen, int nLevel = SOL_SOCKET );

戻り値

関数が成功したそうでなければ 0、および具体的なエラー コードGetLastErrorの呼び出し取得できます。このメンバー関数を次のエラーを適用します。:

パラメーター

nOptionName

値を設定するのには、ソケット ・ オプション。

lpOptionValue

要求されたオプションの値を指定のバッファーへのポインター。

nOptionLen

LpOptionValueバッファーのバイト単位のサイズ。

nLevel

オプションで定義されているレベル;サポートされているレベルだけSOL_SOCKETIPPROTO_TCPです。

解説

ソケット オプションを設定するにはこのメンバー関数を呼び出します。SetSockOptの任意の状態での任意のタイプのソケットに関連付けられたソケット オプションの現在の値を設定します。オプションは複数のプロトコル レベルで存在することができますが、この仕様には最上「ソケット」レベルに存在するオプションのみを定義します。ブロードキャスト メッセージのソケットで、送信することができます、かどうか、通常のデータ ストリームでは、優先データを受信するかどうかなど、ソケットの操作をオプションします。

2 種類のソケット オプションです: ブール型のオプションを有効にするまたは機能や動作を無効にして、整数値または構造体を必要とするオプション。ブール型のオプションを有効にするには、 lpOptionValueを 0 以外の整数をポイントします。ゼロに等しい整数指すは、 lpOptionValueのオプションを無効にするには。nOptionLenは、 sizeof(BOOL)のブール型のオプションをする必要があります。その他のオプションについては、 lpOptionValue整数または目的の値をオプション、およびnOptionLenを含む構造体を指すは整数または構造体の長さ。

SO_LINGERは、未送信のデータが、ソケットのキューには、ソケットを閉じるには閉じる関数が呼び出されるときに実行するアクションを制御します。詳細についてを参照してください 、Win32 SDK ドキュメントでWindows ソケットのプログラミングに関する考慮事項

既定では、ソケット (バインドを参照) は既に使用されて、ローカル アドレスにバインドできません。ただし、「この方法でアドレスを再利用するには」のが望ましいこと。すべての接続は、ローカルとリモートのアドレスの組み合わせによって一意に識別されますので、リモートのアドレスが異なる限り、同じローカル アドレスにバインドされた 2 つのソケットを持つ問題はありません。

目的のアドレスはすでに別のソケットで使用されているため、ソケットのバインド呼び出しが禁止されるないこと、Windows ソケットの実装に通知するには、アプリケーション ソケットのSO_REUSEADDRソケット オプションバインド呼び出しを発行する前に設定する必要があります。オプションのバインド呼び出し時にのみ解釈されることに注意してくださいしたがって、既存のアドレスにバインドしないには、ソケット オプションを設定する (が無害である) 必要はありません、設定後、バインドオプションをリセットする呼び出し効果これまたは他の任意のソケットがありません。

アプリケーションでは、Windows ソケットの実装、 SO_KEEPALIVEソケット オプションを有効にして"keep alive"パケット伝送制御プロトコル (TCP) 接続の使用を有効にすることを要求できます。("Keep alive"パケットについてを参照してください Windows ソケット プログラミングに関する考慮事項Win32 sdk)。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 送信する未送信のデータを待っている近くをブロックしないでください。このオプションを設定するSO_LINGER l_onoffを 0 に設定を設定すると同じです。
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 ヘッダーにオプションを設定するフィールド。

CAsyncSocket 概要|nbsp;クラス メンバー |階層図(&N)

参照特価;CAsyncSocket::AsyncSelectCAsyncSocket::BindCAsyncSocket::CreateCAsyncSocket::GetSockOptCAsyncSocket::IOCtl(&N)

Index