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
WSAENETDOWN
Error en el subsistema de red.
WSAEFAULT
El búfer al que hace referencia el parámetro lpInboundDisconnectData es demasiado pequeño.
WSAENOPROTOOPT
La familia de protocolos indicada no admite los datos de desconexión.
WSAEINPROGRESS
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.
WSAENOTCONN
El socket no está conectado (solo sockets orientados a la conexión).
WSAENOTSOCK
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

Consulte también

LPWSPConnect

LPWSPSocket