WSARecvDisconnect 関数 (winsock2.h)
WSARecvDisconnect 関数はソケットの受信を終了し、ソケットが接続指向の場合は切断データを取得します。
構文
int WSAAPI WSARecvDisconnect(
[in] SOCKET s,
[out] LPWSABUF lpInboundDisconnectData
);
パラメーター
[in] s
ソケットを識別する記述子。
[out] lpInboundDisconnectData
受信切断データへのポインター。
戻り値
エラーが発生しない場合、 WSARecvDisconnect は 0 を返します。 それ以外の場合は、SOCKET_ERRORの値が返され、 WSAGetLastError を呼び出すことによって特定のエラー コードを取得できます。
エラー コード | 意味 |
---|---|
この関数を使用する前に、 WSAStartup 呼び出しが正常に行われる必要があります。 | |
ネットワーク サブシステムが失敗しました。 | |
パラメーター lpInboundDisconnectData によって参照されるバッファーが小さすぎます。 | |
切断データは、指定されたプロトコル ファミリではサポートされていません。 WSAENOPROTOOPT エラー コードを返すために、切断データをサポートしない TCP/IP の実装は必要ありません。 Microsoft による TCP/IP の実装については、「解説」セクションを参照してください。 | |
ブロックしている Windows Sockets 1.1 呼び出しが進行中であるか、サービス プロバイダーがコールバック関数を処理しています。 | |
ソケットが接続されていません (接続指向のソケットのみ)。 | |
記述子はソケットではありません。 |
注釈
WSARecvDisconnect 関数は、接続指向ソケットで使用され、受信を無効にし、リモート パーティから受信切断データを取得します。 これはシャットダウン (SD_RECEIVE) と同じですが、 WSARecvDisconnect では切断データの受信も許可されます (これをサポートするプロトコル内)。
この関数が正常に発行されると、ソケットでの後続の受信は許可されません。 WSARecvDisconnect を呼び出しても、下位のプロトコル レイヤーには影響しません。 TCP ソケットの場合、受け取りを待機しているソケットにまだデータがキューに入っている場合、またはデータが後続に到着した場合、データをユーザーに配信できないため、接続はリセットされます。 UDP の場合、受信データグラムは受け入れられ、キューに入れられます。 いずれの場合も、ICMP エラー パケットは生成されません。
WSARecvDisconnect 関数はソケットを閉じず、ソケットにアタッチされているリソースは closesocket が呼び出されるまで解放されません。
WSARecvDisconnect 関数は、ソケットのSO_LINGER設定に関係なくブロックしません。
アプリケーションは、 WSARecvDisconnect を使用して切断された後にソケットを再利用できることに依存しないでください。 特に、このようなソケットでの 接続 または WSAConnect の使用をサポートするために、Windows ソケット プロバイダーは必要ありません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winsock2.h |
Library | Ws2_32.lib |
[DLL] | Ws2_32.dll |