Compartir a través de


Función WSASendDisconnect (winsock2.h)

La función WSASendDisconnect inicia la finalización de la conexión para el socket y envía datos de desconexión.

Sintaxis

int WSAAPI WSASendDisconnect(
  [in] SOCKET   s,
  [in] LPWSABUF lpOutboundDisconnectData
);

Parámetros

[in] s

Descriptor que identifica un socket.

[in] lpOutboundDisconnectData

Puntero a los datos de desconexión salientes.

Valor devuelto

Si no se produce ningún error, WSASendDisconnect 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
WSANOTINITIALISED
Debe producirse una llamada de WSAStartup correcta antes de usar esta función.
WSAENETDOWN
Error en el subsistema de red.
WSAENOPROTOOPT
El parámetro lpOutboundDisconnectData no es NULL y el proveedor de servicios no admite los datos de desconexión.
WSAEINPROGRESS
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.
WSAENOTCONN
El socket no está conectado (solo sockets orientados a la conexión).
WSAENOTSOCK
El descriptor no es un socket.
WSAEFAULT
El parámetro lpOutboundDisconnectData no está completamente incluido en una parte válida del espacio de direcciones del usuario.

Comentarios

La función WSASendDisconnect se usa en sockets orientados a la conexión para deshabilitar la transmisión e iniciar la terminación de la conexión junto con la transmisión de datos de desconexión, si existe. Esto equivale a un apagado (SD_SEND), excepto que WSASendDisconnect también permite enviar datos de desconexión (en protocolos que lo admiten).

Una vez que esta función se haya emitido correctamente, no se permiten los envíos posteriores.

El parámetro lpOutboundDisconnectData , si no ES NULL, apunta a un búfer que contiene los datos de desconexión salientes que se enviarán a la entidad remota para su recuperación mediante WSARecvDisconnect.

Nota La implementación nativa de TCP/IP en Windows no admite datos de desconexión. Los datos de desconexión solo se admiten con los proveedores de Windows Sockets que tienen la marca XP1_DISCONNECT_DATA en su estructura de WSAPROTOCOL_INFO . Use la función WSAEnumProtocols para obtener estructuras de WSAPROTOCOL_INFO para todos los proveedores instalados.
 
La función WSASendDisconnect no cierra el socket y los recursos conectados al socket no se liberarán hasta que se invoque closesocket .

La función WSASendDisconnect no se bloquea independientemente de la configuración de SO_LINGER en el socket.

Una aplicación no debe confiar en poder reutilizar un socket después de llamar a WSASendDisconnect. En concreto, no es necesario que un proveedor de Windows Sockets admita el uso deWSAConnect/ en este tipo de socket.

Nota Al emitir una llamada de Winsock de bloqueo, como WSASendDisconnect, Winsock puede necesitar esperar un evento de red antes de que se pueda completar la llamada. Winsock realiza una espera alertable en esta situación, que se puede interrumpir mediante una llamada de procedimiento asincrónica (APC) programada en el mismo subproceso. La emisión de otra llamada winsock de bloqueo dentro de un APC que interrumpió una llamada de Winsock de bloqueo en curso en el mismo subproceso provocará un comportamiento indefinido y los clientes winsock nunca deben intentarlo.
 

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

Consulte también

Funciones winsock

Referencia de Winsock

connect

socket