Función WSARecvDisconnect (winsock2.h)
La función WSARecvDisconnect finaliza la recepción en un socket y recupera los datos de desconexión si el socket está orientado a la conexión.
Sintaxis
int WSAAPI WSARecvDisconnect(
[in] SOCKET s,
[out] LPWSABUF lpInboundDisconnectData
);
Parámetros
[in] s
Descriptor que identifica un socket.
[out] lpInboundDisconnectData
Puntero a los datos de desconexión entrantes.
Valor devuelto
Si no se produce ningún error, WSARecvDisconnect devuelve cero. De lo contrario, se devuelve un valor de SOCKET_ERROR y se puede recuperar un código de error específico llamando a WSAGetLastError.
Código de error | Significado |
---|---|
Debe producirse una llamada de WSAStartup correcta antes de usar esta función. | |
Error en el subsistema de red. | |
El búfer al que hace referencia el parámetro lpInboundDisconnectData es demasiado pequeño. | |
La familia de protocolos indicado no admite los datos de desconexión. Tenga en cuenta que las implementaciones de TCP/IP que no admiten datos de desconexión no son necesarias para devolver el código de error WSAENOPROTOOPT. Consulte la sección de comentarios para obtener información sobre la implementación de Microsoft de TCP/IP. | |
Una llamada de Bloqueo de Windows Sockets 1.1 está en curso o el proveedor de servicios sigue procesando una función de devolución de llamada. | |
El socket no está conectado (solo sockets orientados a la conexión). | |
El descriptor no es un socket. |
Comentarios
La función WSARecvDisconnect se usa en sockets orientados a la conexión para deshabilitar la recepción y recuperar los datos de desconexión entrantes de la entidad remota. Esto equivale a un apagado (SD_RECEIVE), excepto que WSARecvDisconnect también permite la recepción de datos de desconexión (en protocolos que lo admiten).
Una vez que esta función se haya emitido correctamente, no se permitirán las recepciones posteriores en el socket. Llamar a WSARecvDisconnect no tiene ningún efecto en las capas de protocolo inferior. En el caso de los sockets TCP, si todavía hay datos en cola en el socket que esperan recibirse, o los datos llegan posteriormente, se restablece la conexión, ya que los datos no se pueden entregar al usuario. Para UDP, se aceptan y ponen en cola los datagramas entrantes. En ningún caso se generará un paquete de error ICMP.
La función WSARecvDisconnect no cierra el socket y los recursos conectados al socket no se liberarán hasta que se invoque closesocket .
La función WSARecvDisconnect no se bloquea independientemente de la configuración de SO_LINGER en el socket.
Una aplicación no debe depender de poder reutilizar un socket después de que se haya desconectado mediante WSARecvDisconnect. En concreto, no es necesario que un proveedor de Windows Sockets admita el uso de connect o WSAConnect en dicho socket.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winsock2.h |
Library | Ws2_32.lib |
Archivo DLL | Ws2_32.dll |