LPWSPGETSOCKOPT コールバック関数 (ws2spi.h)
LPWSPGetSockOpt 関数は、ソケット オプションを取得します。
構文
LPWSPGETSOCKOPT Lpwspgetsockopt;
int Lpwspgetsockopt(
SOCKET s,
int level,
int optname,
char *optval,
LPINT optlen,
LPINT lpErrno
)
{...}
パラメーター
s
ソケットを識別する記述子。
level
オプションが定義されているレベル。サポートされているレベルには 、SOL_SOCKETが含まれます。 (プロトコル固有のレベルの詳細については、付録を参照してください)。
optname
値を取得するソケット オプション。
optval
要求されたオプションの値が返されるバッファーへのポインター。
optlen
optval バッファーのサイズ (バイト単位) へのポインター。
lpErrno
エラー コードへのポインター。
戻り値
エラーが発生しない場合、 LPWSPGetSockOpt は 0 を返します。 それ以外の場合は、SOCKET_ERRORの値が返され、 lpErrno で特定のエラー コードを使用できます。
エラー コード | 意味 |
---|---|
ネットワーク サブシステムが失敗しました。 | |
optval パラメーターまたは optlen パラメーターの 1 つがユーザー アドレス空間の有効な部分ではないか、optlen パラメーターが小さすぎます。 | |
レベルが不明または無効です。 | |
コールバックが進行中の場合、関数が呼び出されます。 | |
オプションが不明であるか、指定されたプロトコル ファミリではサポートされていません。 | |
記述子はソケットではありません。 |
注釈
LPWSPGetSockOpt 関数は、任意の型のソケットに関連付けられているソケット オプションの現在の値を任意の状態で取得し、結果を optval に格納します。 オプションは複数のプロトコル レベルで存在できますが、常に最上位のソケット レベルに存在します。 オプションは、パケットのルーティングや OOB データ転送などのソケット操作に影響します。
選択したオプションに関連付けられている値は、バッファー optval で返されます。 optlen が指す整数には、最初にこのバッファーのサイズが含まれている必要があります。が返されると、返される値のサイズに設定されます。 SO_LINGERの場合、これは構造体の残留サイズになります。その他のほとんどのオプションでは、整数のサイズになります。
Windows ソケット SPI クライアントは、指定したパラメーターによって直接または間接的に指されるメモリ領域を割り当てる役割を担います。
オプションが LPWSPSetSockOpt で設定されていない場合、 LPWSPGetSockOpt は オプションの既定値を返します。
ソケット オプションの詳細については、「ソケット オプション」を参照してください。
level = SOL_SOCKET
値 | Type | 説明 | Default |
---|---|---|---|
SO_ACCEPTCONN | BOOL | ソケットは LPWSPListen を介してリッスンしています。 | LPWSPListen が実行されていない場合は FALSE。 |
SO_BROADCAST | BOOL | ソケットは、ブロードキャスト メッセージの送信と受信用に構成されます。 | FALSE |
SO_DEBUG | BOOL | デバッグが有効になっています。 | FALSE |
SO_DONTLINGER | BOOL | true の場合、SO_LINGER オプションは無効になります。 | TRUE |
SO_DONTROUTE | BOOL | ルーティングが無効になっています。 このソケット オプションの設定は成功しますが、AF_INETソケットでは無視されます。 は、WSAENOPROTOOPT AF_INET6ソケットで失敗します。 このオプションは ATM ソケットではサポートされていません (エラーが発生します)。 | FALSE |
SO_ERROR | 整数 (integer) | エラーの状態を取得し、クリアします。 | 0 |
SO_GROUP_ID | GROUP | 予約済み。 | Null |
SO_GROUP_PRIORITY | 整数 (integer) | 予約済み。 | 0 |
SO_KEEPALIVE | BOOL | キープアライブが送信されています。 ATM ソケットではサポートされていません (エラーが発生します)。 | FALSE |
SO_LINGER | LINGER 構造体 | 現在の残留オプションを返します。 | 1 はオン (既定値)、0 はオフです |
SO_MAX_MSG_SIZE | 符号なし整数 | メッセージ指向ソケット型のメッセージの最大サイズ (たとえば、SOCK_DGRAM)。 ストリーム指向ソケットには意味がありません。 | 実装依存 |
SO_OOBINLINE | BOOL | OOB データは、通常のデータ ストリームで受信されています。 | FALSE |
SO_PROTOCOL_INFO | WSAPROTOCOL_INFO 構造 | このソケットにバインドされているプロトコルのプロトコル情報の説明。 | プロトコルに依存 |
SO_RCVBUF | 整数 (integer) | 受信用に予約されているソケットごとのバッファー領域の合計。 これはSO_MAX_MSG_SIZEとは無関係であり、TCP 受信ウィンドウのサイズに必ずしも対応するとは限りません。 | 実装に依存 |
SO_REUSEADDR | BOOL | ソケットは、既に使用されているアドレスにバインドできます。 このオプションは ATM ソケットには適用されません。 | FALSE。 |
SO_SNDBUF | 整数 (integer) | 送信用に予約されているソケットごとのバッファー領域の合計。 これはSO_MAX_MSG_SIZEとは無関係であり、TCP 送信ウィンドウのサイズに必ずしも対応するとは限りません。 | 実装に依存 |
SO_TYPE | 整数 (integer) | ソケットの種類 (たとえば、SOCK_STREAM)。 | LPWSPSocket"LPWSPSocket で>作成されたとおり |
PVD_CONFIG | サービス プロバイダー依存 | ソケット に関連付けられているサービス プロバイダーからの不透明なデータ構造オブジェクト。 このオブジェクトは、サービス プロバイダーの現在の構成情報を格納します。 このデータ構造の正確な形式は、サービス プロバイダー固有です。 | 実装に依存 |
サポートされていないオプションを指定して LPWSPGetSockOpt を呼び出すと、 WSAENOPROTOOPT のエラー コードが lpErrno で返されます。
-
SO_DEBUG
-
SO_DEBUG オプションが Windows ソケット SPI クライアントによって設定されている場合、Windows ソケット サービス プロバイダーは出力デバッグ情報を提供することをお勧めします (必須ではありません)。 デバッグ情報を生成するためのメカニズムと、それが受け取る形式は、この仕様の範囲外です。
-
SO_ERROR
-
SO_ERROR オプションは、ソケットごとのエラー コードを返してリセットします (これは、必ずしも、WS2_32.DLL によって維持されるスレッドごとのエラー コードと同じではありません)。 ソケットで Windows ソケット呼び出しが成功しても、SO_ERROR オプションによって返されるソケット ベースのエラー コードはリセットされません。
-
SO_GROUP_ID
-
予約済み。 この値は NULL にする必要があります。
-
SO_GROUP_PRIORITY
-
予約済み。
-
Windows ソケット SPI クライアントは、TCP/IP サービス プロバイダーが SO_KEEPALIVE ソケット オプションをオンにすることで、TCP 接続でのキープアライブ パケットの使用を有効にするよう要求できます。 Windows ソケット プロバイダーは、キープアライブの使用をサポートする必要はありません。有効な場合、正確なセマンティクスは実装固有ですが、RFC 1122 のセクション 4.2.3.6 に準拠する必要があります。 インターネット ホストの要件 - 通信層。 (このリソースは英語でのみ使用できます)。キープアライブの結果として接続が切断された場合、エラー コード WSAENETRESET はソケットで進行中の呼び出しに返され、それ以降の呼び出しは WSAENOTCONN で失敗します。
-
SO_LINGER
-
SO_LINGERは、未格納データがソケットでキューに入れられて LPWSPCloseSocket が実行されたときに実行されるアクションを制御します。 SO_LINGER設定が LPWSPCloseSocket のセマンティクスに影響する方法の説明については、 LPWSPCloseSocket を参照してください。 Windows ソケット SPI クライアントは、次の要素を使用して 、必要な動作を取得します (optval パラメーターによって指される) 必要な構造を作成します。
}
-
SO_MAX_MSG_SIZE
-
これは、サービス プロバイダーによって実装されるメッセージ指向のソケット型 (たとえば、SOCK_DGRAM) の送信送信メッセージの最大サイズを示す、取得専用のソケット オプションです。 バイト ストリーム指向ソケットには意味がありません。 最大受信メッセージ サイズを決定するためのプロビジョニングはありません。
-
SO_PROTOCOL_INFOW
-
これは、このソケットに関連付けられている WSAPROTOCOL_INFO 構造体を提供する取得専用オプションです。 この構造体の詳細については、「 WSCEnumProtocols 」を参照してください。
-
SO_SNDBUF
-
Windows ソケット サービス プロバイダーがSO_RCVBUFオプションとSO_SNDBUFオプションをサポートしている場合、Windows ソケット SPI クライアントは LPWSPSetSockOpt を使用して異なるバッファー サイズ (大きいまたは小さい) を要求できます。 サービス プロバイダーが要求された金額全体を利用できなかった場合でも、呼び出しは成功する可能性があります。 Windows ソケット SPI クライアントは、同じオプションを使用してこの関数を呼び出して、実際に提供されるバッファー サイズをチェックする必要があります。
-
SO_REUSEADDR
-
既定では、ソケットは既に使用されているローカル アドレスにバインドできません ( LPWSPBind を参照)。 ただし、場合によっては、この方法でアドレスを再利用することが望ましい場合があります。 すべての接続はローカル アドレスとリモート アドレスの組み合わせによって一意に識別されるため、リモート アドレスが異なる限り、同じローカル アドレスに 2 つのソケットをバインドしても問題はありません。 ソケット上の LPWSPBind を別のソケットで既に使用されているローカル アドレスにバインドできるようにする必要があることを Windows ソケット プロバイダーに通知するには、Windows ソケット SPI クライアントは、 LPWSPBind を発行する前に、ソケットの SO_REUSEADDR ソケット オプションを設定する必要があります。 オプションは LPWSPBind の時点でのみ解釈されることに注意してください。 したがって、既存のアドレスにバインドされないソケットでオプションを設定し、 LPWSPBind がこれやその他のソケットに影響を与えない後にオプションを設定またはリセットすることは不要です (無害です)。
-
PVD_CONFIG
-
このオプションは、ソケット s に関連付けられているサービス プロバイダーから不透明なデータ構造オブジェクトを取得します。 このオブジェクトは、サービス プロバイダーの現在の構成情報を格納します。 このデータ構造の正確な形式は、サービス プロバイダー固有です。
要件
要件 値 サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ] サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ] Header ws2spi.h こちらもご覧ください