次の方法で共有


CAsyncSocket::SetSockOpt

ソケットのオプションを設定するには、このメンバー関数を呼び出します。

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

パラメーター

  • nOptionName
    値がに設定されているソケットのオプション。

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

  • nOptionLen
    バイト lpOptionValue バッファーのサイズ。

  • nLevel
    オプションが定義されているレベル; 唯一のサポート レベルは SOL_SOCKETIPPROTO_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_DONTLINGERSO_KEEPALIVESO_LINGERSO_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_onoffSO_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

参照

関連項目

CAsyncSocket クラス

階層図

CAsyncSocket::AsyncSelect

CAsyncSocket::Bind

CAsyncSocket::Create

CAsyncSocket::GetSockOpt

CAsyncSocket::IOCtl