Função de retorno de chamada LPWSPRECVDISCONNECT (ws2spi.h)
A função LPWSPRecvDisconnect encerra a recepção em um soquete e recupera os dados de desconexão, se o soquete for orientado à conexão.
Sintaxe
LPWSPRECVDISCONNECT Lpwsprecvdisconnect;
int Lpwsprecvdisconnect(
[in] SOCKET s,
[out] LPWSABUF lpInboundDisconnectData,
[out] LPINT lpErrno
)
{...}
Parâmetros
[in] s
Descritor que identifica um soquete.
[out] lpInboundDisconnectData
Ponteiro para um buffer no qual os dados de desconexão devem ser copiados.
[out] lpErrno
Ponteiro para o código de erro.
Valor retornado
Se nenhum erro ocorrer, LPWSPRecvDisconnect retornará zero. Caso contrário, um valor de SOCKET_ERROR será retornado e um código de erro específico estará disponível em lpErrno.
Código do Erro | Significado |
---|---|
O subsistema de rede falhou. | |
O buffer referenciado pelo parâmetro lpInboundDisconnectData é muito pequeno. | |
Não há suporte para desconectar dados pela família de protocolos indicada. | |
O bloqueio da chamada do Windows Sockets está em andamento ou o provedor de serviços ainda está processando uma função de retorno de chamada. | |
O soquete não está conectado (somente soquetes orientados à conexão). | |
O descritor não é um soquete. |
Comentários
LPWSPRecvDisconnect é usado em soquetes orientados à conexão para desabilitar a recepção e recuperar quaisquer dados de desconexão de entrada da parte remota.
Depois que essa função tiver sido emitida com êxito, os recebimentos subsequentes no soquete não serão permitidos. Isso não tem efeito nas camadas de protocolo inferiores. Para TCP, a janela TCP não é alterada e os dados de entrada serão aceitos (mas não confirmados) até que a janela seja esgotada. Para UDP, os datagramas de entrada são aceitos e enfileirados. Em nenhum caso será gerado um pacote de erro ICMP.
Para receber com êxito os dados de desconexão de entrada, um cliente SPI do Windows Sockets deve usar outros mecanismos para determinar que o circuito foi fechado. Por exemplo, um cliente precisa receber uma notificação FD_CLOSE ou obter um valor de retorno zero ou um código de erro WSAEDISCON de LPWSPRecv.
Observe que LPWSPRecvDisconnect não fecha o soquete e os recursos anexados ao soquete não serão liberados até que LPWSPCloseSocket seja invocado.
Observação
LPWSPRecvDisconnect não bloqueia independentemente da configuração de SO_LINGER no soquete. Um cliente SPI do Windows Sockets não deve depender da capacidade de reutilizar um soquete depois de ter sido LPWSPRecvDisconnected. Em particular, um provedor do Windows Sockets não é necessário para dar suporte ao uso de LPWSPConnect em tal soquete.
Requisitos
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] |
Cabeçalho | ws2spi.h |