Condividi tramite


Funzione WSASendDisconnect (winsock2.h)

La funzione WSASendDisconnect avvia la terminazione della connessione per il socket e invia i dati di disconnessione.

Sintassi

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

Parametri

[in] s

Descrittore che identifica un socket.

[in] lpOutboundDisconnectData

Puntatore ai dati di disconnessione in uscita.

Valore restituito

Se non si verifica alcun errore, WSASendDisconnect restituisce zero. In caso contrario, viene restituito un valore di SOCKET_ERROR e un codice di errore specifico può essere recuperato chiamando WSAGetLastError.

Codice di errore Significato
WSANOTINITIALISED
Prima di usare questa funzione, è necessario eseguire una chiamata WSAStartup riuscita.
WSAENETDOWN
Il sottosistema di rete non è riuscito.
WSAENOPROTOOPT
Il parametro lpOutboundDisconnectData non è NULL e i dati di disconnessione non sono supportati dal provider di servizi.
WSAEINPROGRESS
Una chiamata windows Sockets 1.1 bloccata è 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.
WSAEFAULT
Il parametro lpOutboundDisconnectData non è completamente contenuto in una parte valida dello spazio degli indirizzi utente.

Commenti

La funzione WSASendDisconnect viene usata sui socket orientati alla connessione per disabilitare la trasmissione e avviare la terminazione della connessione insieme alla trasmissione dei dati disconnessi, se presente. Equivale a un arresto (SD_SEND), ad eccezione del fatto che WSASendDisconnect consente anche l'invio di dati di disconnessione (nei protocolli che lo supportano).

Dopo l'emissione di questa funzione, gli invii successivi non sono consentiti.

Il parametro lpOutboundDisconnectData , se non NULL, punta a un buffer contenente i dati di disconnessione in uscita da inviare alla parte remota per il recupero tramite WSARecvDisconnect.

Nota L'implementazione nativa di TCP/IP in Windows non supporta i dati di disconnessione. I dati di disconnessione sono supportati solo con i provider di Windows Sockets con il flag di XP1_DISCONNECT_DATA nella struttura WSAPROTOCOL_INFO . Usare la funzione WSAEnumProtocols per ottenere strutture WSAPROTOCOL_INFO per tutti i provider installati.
 
La funzione WSASendDisconnect non chiude il socket e le risorse collegate al socket non verranno liberate finché non viene richiamato closesocket .

La funzione WSASendDisconnect non blocca indipendentemente dall'impostazione SO_LINGER sul socket.

Un'applicazione non deve basarsi sulla possibilità di riutilizzare un socket dopo aver chiamato WSASendDisconnect. In particolare, un provider Windows Sockets non è necessario per supportare l'uso della connessione/WSAConnect in un socket di questo tipo.

Nota Quando si emette una chiamata Winsock bloccante, ad esempio WSASendDisconnect, Winsock potrebbe dover attendere un evento di rete prima che la chiamata possa essere completata. Winsock esegue un'attesa avvisabile in questa situazione, che può essere interrotta da una chiamata di routine asincrona pianificata nello stesso thread. L'emissione di un'altra chiamata winsock bloccata all'interno di un APC che ha interrotto una chiamata winsock in corso sullo stesso thread comporterà un comportamento non definito e non deve mai essere tentato dai client Winsock.
 

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

Vedi anche

Funzioni Winsock

Informazioni di riferimento su Winsock

connect

socket