Compartilhar via


Função WSASendDisconnect (winsock2.h)

A função WSASendDisconnect inicia o encerramento da conexão para o soquete e envia dados de desconexão.

Sintaxe

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

Parâmetros

[in] s

Descritor que identifica um soquete.

[in] lpOutboundDisconnectData

Um ponteiro para os dados de desconexão de saída.

Retornar valor

Se nenhum erro ocorrer, WSASendDisconnect retornará zero. Caso contrário, um valor de SOCKET_ERROR será retornado e um código de erro específico poderá ser recuperado chamando WSAGetLastError.

Código do erro Significado
WSANOTINITIALISED
Uma chamada WSAStartup bem-sucedida deve ocorrer antes de usar essa função.
WSAENETDOWN
O subsistema de rede falhou.
WSAENOPROTOOPT
O parâmetro lpOutboundDisconnectData não é NULL e os dados de desconexão não são compatíveis com o provedor de serviços.
WSAEINPROGRESS
Uma chamada de bloqueio do Windows Sockets 1.1 está em andamento ou o provedor de serviços ainda está processando uma função de retorno de chamada.
WSAENOTCONN
O soquete não está conectado (somente soquetes orientados à conexão).
WSAENOTSOCK
O descritor não é um soquete.
WSAEFAULT
O parâmetro lpOutboundDisconnectData não está completamente contido em uma parte válida do espaço de endereço do usuário.

Comentários

A função WSASendDisconnect é usada em soquetes orientados à conexão para desabilitar a transmissão e iniciar o encerramento da conexão junto com a transmissão de dados de desconexão, se houver. Isso é equivalente a um desligamento (SD_SEND), exceto que O WSASendDisconnect também permite o envio de dados de desconexão (em protocolos que dão suporte a ele).

Depois que essa função tiver sido emitida com êxito, os envios subsequentes não serão permitidos.

O parâmetro lpOutboundDisconnectData , se não FOR NULL, aponta para um buffer que contém os dados de desconexão de saída a serem enviados à parte remota para recuperação usando WSARecvDisconnect.

Nota A implementação nativa de TCP/IP no Windows não dá suporte a dados de desconexão. Os dados de desconexão só têm suporte com provedores do Windows Sockets que têm o sinalizador XP1_DISCONNECT_DATA em sua estrutura de WSAPROTOCOL_INFO . Use a função WSAEnumProtocols para obter estruturas de WSAPROTOCOL_INFO para todos os provedores instalados.
 
A função WSASendDisconnect não fecha o soquete e os recursos anexados ao soquete não serão liberados até que closesocket seja invocado.

A função WSASendDisconnect não bloqueia independentemente da configuração de SO_LINGER no soquete.

Um aplicativo não deve depender da capacidade de reutilizar um soquete depois de chamar WSASendDisconnect. Em particular, um provedor do Windows Sockets não é necessário para dar suporte ao uso da conexão/WSAConnect em tal soquete.

Nota Ao emitir uma chamada winsock de bloqueio, como WSASendDisconnect, o Winsock pode precisar aguardar um evento de rede antes que a chamada possa ser concluída. O Winsock executa uma espera alertável nessa situação, que pode ser interrompida por uma APC (chamada de procedimento assíncrono) agendada no mesmo thread. A emissão de outra chamada winsock de bloqueio dentro de um APC que interrompeu uma chamada Winsock de bloqueio contínuo no mesmo thread levará a um comportamento indefinido e nunca deve ser tentada por clientes Winsock.
 

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winsock2.h
Biblioteca Ws2_32.lib
DLL Ws2_32.dll

Confira também

Funções Winsock

Referência de Winsock

connect

socket