Función de devolución de llamada LPWSPRECVDISCONNECT (ws2spi.h)
La función LPWSPRecvDisconnect finaliza la recepción en un socket y recupera los datos de desconexión, si el socket está orientado a la conexión.
Sintaxis
LPWSPRECVDISCONNECT Lpwsprecvdisconnect;
int Lpwsprecvdisconnect(
[in] SOCKET s,
[out] LPWSABUF lpInboundDisconnectData,
[out] LPINT lpErrno
)
{...}
Parámetros
[in] s
Descriptor que identifica un socket.
[out] lpInboundDisconnectData
Puntero a un búfer en el que se van a copiar los datos de desconexión.
[out] lpErrno
Puntero al código de error.
Valor devuelto
Si no se produce ningún error, LPWSPRecvDisconnect devuelve cero. De lo contrario, se devuelve un valor de SOCKET_ERROR y hay disponible un código de error específico en lpErrno.
Código de error | Significado |
---|---|
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 indicada no admite los datos de desconexión. | |
El bloqueo de la llamada a Windows Sockets 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. |
Observaciones
LPWSPRecvDisconnect 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.
Una vez que esta función se haya emitido correctamente, no se permitirán las recepciones posteriores en el socket. Esto no tiene ningún efecto en las capas de protocolo inferiores. Para TCP, la ventana TCP no se cambia y se aceptarán los datos entrantes (pero no confirmados) hasta que se agote la ventana. Para UDP, se aceptan y ponen en cola los datagramas entrantes. En ningún caso se generará un paquete de error ICMP.
Para recibir correctamente los datos de desconexión entrantes, un cliente SPI de Windows Sockets debe usar otros mecanismos para determinar que el circuito se ha cerrado. Por ejemplo, un cliente debe recibir una notificación de FD_CLOSE, o obtener un valor devuelto cero, o un código de error WSAEDISCON de LPWSPRecv.
Tenga en cuenta que LPWSPRecvDisconnect no cierra el socket y los recursos conectados al socket no se liberarán hasta que se invoque LPWSPCloseSocket .
Nota
LPWSPRecvDisconnect no se bloquea independientemente de la configuración de SO_LINGER en el socket. Un cliente SPI de Windows Sockets no debe basarse en poder reutilizar un socket después de haber sido LPWSPRecvDisconnected. En concreto, no se requiere un proveedor de Windows Sockets para admitir el uso de LPWSPConnect en este tipo de socket.
Requisitos
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Encabezado | ws2spi.h |