Windows Sockets: notifiche socket
In questo articolo vengono descritte le funzioni di notifica nelle classi di socket. Queste funzioni membro sono funzioni di callback che il framework chiama per notificare all'oggetto socket degli eventi importanti. Le funzioni di notifica sono:
OnReceive: Notifica questo blocco che sono presenti dati nel buffer affinché recuperi chiamando Di ricezione.
OnSend: Notifica questo blocco che ora può inviare dati chiamando Invia.
OnAccept: Notifica questo socket condizione in ascolto in grado di accettare in attesa di richieste di connessione chiamando Accetta.
OnConnect: Notifica il connettore che il tentativo di connessione ha completato: forse correttamente o eventualmente in errore.
OnClose: Notifica questo blocco che il blocco connesso a chiuso.
Nota
Una funzione di notifica aggiuntiva è OnOutOfBandData.Questa notifica indica al blocco di ricezione che il blocco inviando dispone di dati "fuori banda" da inviare.I dati fuori banda sono un canale logicamente indipendente associato a ogni coppia di socket di flusso collegati.Il canale fuori banda in genere utilizzato per inviare i dati "urgenti".Dati fuori banda di MFC supporta.Gli utenti avanzati che utilizzano la classe CAsyncSocket potrebbe essere necessario utilizzare il canale fuori banda, ma gli utenti di classe CSocket non sono consigliati progetti di utilizzarli.Il modo più semplice consiste nel creare un secondo socket per passare tali dati.Per ulteriori informazioni sui dati fuori banda, vedere la specifica di Windows Sockets, disponibile in Windows SDK.
Se si deriva dalla classe CAsyncSocket, è necessario eseguire l'override delle funzioni di notifica degli eventi della rete di interesse all'applicazione. Se si deriva una classe dalla classe CSocket, è la scelta se eseguire l'override delle funzioni di notifica di interesse. È inoltre possibile utilizzare CSocket stesso, nel qual caso l'impostazione predefinita di funzioni di notifica a non viene eseguita alcuna operazione.
Queste funzioni sono funzioni di callback sottoponibili a override. CAsyncSocket e CSocket convertono i messaggi in notifiche, ma è necessario implementare come funzioni di notifica rispondono se si desidera utilizzarli. Le funzioni di notifica vengono richiamate quando il blocco riceve una notifica di un evento di interesse, quali la presenza di dati da leggere.
MFC chiama le funzioni di notifica che consentono di personalizzare il comportamento del blocco quando riceve una notifica. Ad esempio, è possibile chiamare Ricezione dalla funzione di notifica di OnReceive, ovvero, su essere notificati vi sono dati da leggere, chiamare Ricezione per leggerlo. Questo approccio non è necessario, ma è uno scenario valido. In alternativa, è possibile utilizzare la funzione di notifica per tenere traccia dello stato di avanzamento, messaggi di TRACCIA di stampa, e così via.
È possibile usufruire delle notifiche eseguire l'override delle funzioni di notifica in una classe derivata di socket e fornendo un'implementazione.
Durante un'operazione come ricevere o inviare dati, un oggetto CSocket diventa sincrono. Durante lo stato sincrono, tutte le notifiche per applicare altri socket vengono messe in coda mentre attende correnti di socket la notifica desiderati. Ad esempio, durante una chiamata di Ricezione, il blocco desidera una notifica per indicare). Una volta che il blocco completa la relativa operazione sincrona e asincrona diventa nuovamente, altri socket possono iniziare ricezione di notifiche in coda.
Nota
In CSocket, la funzione di notifica di OnConnect non è mai chiamata.Per le connessioni, chiamare Connetti, che restituiranno quando la connessione viene completato (correttamente o per errore).Come notifiche di connessione vengono gestite è un dettaglio di implementazione MFC.
Per informazioni dettagliate su ogni funzione di notifica, vedere la funzione in una classe CAsyncSocket nel Riferimento MFC. Per il codice sorgente e le informazioni su esempi di MFC, vedere Esempi di MFC.
Per ulteriori informazioni, vedere: