Condividi tramite


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
WSAENETDOWN
Il sottosistema di rete non è riuscito.
WSAEFAULT
Il buffer a cui fa riferimento il parametro lpInboundDisconnectData è troppo piccolo.
WSAENOPROTOOPT
I dati di disconnessione non sono supportati dalla famiglia di protocolli indicata.
WSAEINPROGRESS
Il blocco della chiamata a Windows Sockets è in corso oppure il provider di servizi sta ancora elaborando una funzione di callback.
WSAENOTCONN
Il socket non è connesso (solo socket orientati alla connessione).
WSAENOTSOCK
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

Vedi anche

LPWSPConnect

LPWSPSocket