Funzione WSARecvDisconnect (winsock2.h)
La funzione WSARecvDisconnect termina la ricezione su un socket e recupera i dati di disconnessione se il socket è orientato alla connessione.
Sintassi
int WSAAPI WSARecvDisconnect(
[in] SOCKET s,
[out] LPWSABUF lpInboundDisconnectData
);
Parametri
[in] s
Descrittore che identifica un socket.
[out] lpInboundDisconnectData
Puntatore ai dati di disconnessione in ingresso.
Valore restituito
Se non si verifica alcun errore, WSARecvDisconnect restituisce zero. In caso contrario, viene restituito un valore di SOCKET_ERROR e è possibile recuperare un codice di errore specifico chiamando WSAGetLastError.
Codice di errore | Significato |
---|---|
Prima di usare questa funzione, è necessario che venga eseguita una chiamata WSAStartup riuscita. | |
Il sottosistema di rete non è riuscito. | |
Il buffer a cui fa riferimento il parametro lpInboundDisconnectData è troppo piccolo. | |
I dati di disconnessione non sono supportati dalla famiglia di protocolli indicata. Si noti che le implementazioni di TCP/IP che non supportano i dati di disconnessione non sono necessarie per restituire il codice di errore WSAENOPROTOOPT. Per informazioni sull'implementazione Microsoft di TCP/IP, vedere la sezione osservazioni. | |
È in corso una chiamata di Windows Sockets 1.1 bloccante oppure il provider di servizi sta ancora elaborando una funzione di callback. | |
Il socket non è connesso (solo socket orientati alla connessione). | |
Il descrittore non è un socket. |
Commenti
La funzione WSARecvDisconnect viene usata nei socket orientati alla connessione per disabilitare la ricezione e recuperare i dati di disconnessione in ingresso dall'entità remota. Equivale a un arresto (SD_RECEIVE), ad eccezione del fatto che WSARecvDisconnect consente anche la ricezione dei dati di disconnessione (nei protocolli che lo supportano).
Dopo che questa funzione è stata rilasciata correttamente, le successive ricevute sul socket non saranno consentite. La chiamata a WSARecvDisconnect non ha alcun effetto sui livelli di protocollo inferiori. Per i socket TCP, se sono ancora presenti dati in coda sul socket in attesa di ricezione o i dati arrivano successivamente, la connessione viene reimpostata, poiché i dati non possono essere recapitati all'utente. Per UDP, i datagrammi in ingresso vengono accettati e accodati. In nessun caso verrà generato un pacchetto di errore ICMP.
La funzione WSARecvDisconnect non chiude il socket e le risorse collegate al socket non verranno liberate finché non viene richiamato closesocket .
La funzione WSARecvDisconnect non blocca indipendentemente dall'impostazione SO_LINGER sul socket.
Un'applicazione non deve basarsi sulla possibilità di riutilizzare un socket dopo la disconnessione tramite WSARecvDisconnect. In particolare, non è necessario un provider Windows Sockets per supportare l'uso di connessione o WSAConnect in un socket di questo tipo.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winsock2.h |
Libreria | Ws2_32.lib |
DLL | Ws2_32.dll |