Funzione di callback LPWSPRECVDISCONNECT (ws2spi.h)
La funzione LPWSPRecvDisconnect termina la ricezione su un socket e recupera i dati di disconnessione, se il socket è orientato alla connessione.
Sintassi
LPWSPRECVDISCONNECT Lpwsprecvdisconnect;
int Lpwsprecvdisconnect(
[in] SOCKET s,
[out] LPWSABUF lpInboundDisconnectData,
[out] LPINT lpErrno
)
{...}
Parametri
[in] s
Descrittore che identifica un socket.
[out] lpInboundDisconnectData
Puntatore a un buffer in cui eseguire la disconnessione dei dati da copiare.
[out] lpErrno
Puntatore al codice di errore.
Valore restituito
Se non si verifica alcun errore, LPWSPRecvDisconnect restituisce zero. In caso contrario, viene restituito un valore di SOCKET_ERROR e un codice di errore specifico è disponibile in lpErrno.
Codice di errore | Significato |
---|---|
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. | |
Il blocco della chiamata a Windows Sockets è in corso 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
LPWSPRecvDisconnect viene usato nei socket orientati alla connessione per disabilitare la ricezione e recuperare i dati di disconnessione in ingresso dalla parte remota.
Dopo che questa funzione è stata rilasciata correttamente, le successive ricevute sul socket non saranno consentite. Questo non ha alcun effetto sui livelli di protocollo inferiori. Per TCP, la finestra TCP non viene modificata e i dati in ingresso verranno accettati (ma non riconosciuti) finché la finestra non viene esaurita. Per UDP, i datagrammi in ingresso vengono accettati e accodati. In nessun caso verrà generato un pacchetto di errore ICMP.
Per ricevere correttamente i dati di disconnessione in ingresso, un client SPI di Windows Sockets deve usare altri meccanismi per determinare che il circuito è stato chiuso. Ad esempio, un client deve ricevere una notifica di FD_CLOSE o ottenere un valore restituito zero o un codice di errore WSAEDISCON da LPWSPRecv.
Si noti che LPWSPRecvDisconnect non chiude il socket e le risorse collegate al socket non verranno liberate finché non viene richiamato LPWSPCloseSocket .
Nota
LPWSPRecvDisconnect non blocca indipendentemente dall'impostazione SO_LINGER sul socket. Un client SPI di Windows Sockets non deve basarsi sulla possibilità di riutilizzare un socket dopo che è stato LPWSPRecvDisconnected. In particolare, un provider Windows Sockets non è necessario per supportare l'uso di LPWSPConnect in un socket di questo tipo.
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Intestazione | ws2spi.h |