SO_BSP_STATE ソケット オプション

SO_BSP_STATE ソケット オプションは、ソケットによって使用されるローカル アドレス、ローカル ポート、リモート アドレス、リモート ポート、ソケットの種類、プロトコルを返します。

この操作を実行するには、次のパラメーターを使用して getsockopt 関数を呼び出します。

ソケット オプションの値

このソケット オプションを表す定数は0x1009。

構文

int getsockopt(
  (SOCKET) s,      // descriptor identifying a socket 
  (int) SOL_SOCKET,   // level
  (int) SO_BSP_STATE, // optname
  (char *) optval,         // output buffer,
  (int) *optlen,       // size of output buffer
);

パラメーター

s [in]

ソケットを識別する記述子。

level [in]

オプションが定義されているレベル。 この操作 にはSOL_SOCKET を使用します。

optname [in]

値を取得するソケット オプション。 この操作 にはSO_BSP_STATE を使用します。

optval [out]

要求されたオプションの値が返されるバッファーへのポインター。 このパラメーターは、 CSADDR_INFO 構造体のサイズ以上のバッファーを指す必要があります。

optlen [in, out]

optval バッファーのサイズ (バイト単位) へのポインター。 このサイズは、 CSADDR_INFO 構造体のサイズ以上である必要があります。

戻り値

操作が正常に完了すると、 getsockopt は 0 を返します。

操作が失敗した場合は、SOCKET_ERRORの値が返され、 WSAGetLastError を呼び出すことによって特定のエラー コードを取得できます。

エラー コード 意味
WSANOTINITIALISED
この関数を使用する前に、 WSAStartup 呼び出しが正常に行われる必要があります。
WSAENETDOWN
ネットワーク サブシステムが失敗しました。
WSAEFAULT
optval パラメーターまたは optlen パラメーターの 1 つは、ユーザー アドレス空間の有効な部分にないメモリを指します。 optlen パラメーターによって指される値がCSADDR_INFO構造体のサイズより小さい場合も、このエラー返されます。
WSAEINPROGRESS
ブロックしている Windows Sockets 1.1 呼び出しが進行中であるか、サービス プロバイダーがコールバック関数を処理しています。
WSAEINVAL
level パラメーターが不明または無効です。
WSAENOPROTOOPT
オプションが不明であるか、指定されたプロトコル ファミリでサポートされていません。
WSAENOTSOCK
記述子はソケットではありません。

 

解説

SO_BSP_STATE ソケット オプションで呼び出される getsockopt 関数は、ソケットによって使用されるローカル アドレス、ローカル ポート、リモート アドレス、リモート ポート、ソケットの種類、プロトコルを取得します。 SO_BSP_STATE ソケット オプションは、IPv6 または IPv4 ソケット (AF_INET6 および AF_INET アドレス ファミリ) で動作します。

getsockopt 関数が成功した場合、optval パラメーターによって指されるバッファー内のCSADDR_INFO構造体で情報が返されます。 optlen が指す整数には、最初にこのバッファーのサイズが含まれている必要があります。戻り時には、optval パラメーターで返される値の長さ (バイト単位) に設定されます。

返されたCSADDR_INFO構造体の iSocketType メンバーと iProtocol メンバーは、 パラメーターのソケット記述子に対して入力されます。

ソケットが接続状態またはバインド状態の場合、返されるCSADDR_INFO構造体の LocalAddr メンバーは、ローカル アドレスとポートを表す SOCKADDR 構造体に設定されます。 ソケットが接続状態の場合、返されたCSADDR_INFO構造体の RemoteAddr メンバーは、リモート アドレスとポートを表す SOCKADDR 構造体に設定されます。

ソケットが接続またはバインドされた状態でない場合は、返されたCSADDR_INFO構造体の LocalAddr メンバーが lpSockaddr メンバー内の NULL ポインターで返され、iSockaddrLength メンバーは 0 に設定されます。 ソケットがバインドされた状態でない場合は、返されたCSADDR_INFO構造体の RemoteAddr メンバーが lpSockaddr メンバー内の NULL ポインターで返され、iSockaddrLength メンバーは 0 に設定されます。

getsockopt 関数が失敗した場合、optval パラメーターと optlen パラメーターは変更されず、optval パラメーターは返されるCSADDR_INFO構造体を指しません。

Ws2def.h ヘッダー ファイルは Winsock2.h に自動的に含まれるので、直接使用しないでください。

要件

要件
サポートされている最小のクライアント
Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows Server 2008 [デスクトップ アプリのみ]
ヘッダー
Ws2def.h (Winsock2.h を含む)

関連項目

getsockopt

CSADDR_INFO

Sockaddr