Condividi tramite


Windows Sockets: notifiche socket

Questo articolo descrive le funzioni di notifica nelle classi socket. Queste funzioni membro sono funzioni di callback che il framework chiama per notificare all'oggetto socket eventi importanti. Le funzioni di notifica sono:

  • OnReceive: notifica a questo socket che nel buffer sono presenti dati da recuperare chiamando Receive.

  • OnSend: notifica a questo socket che può ora inviare dati chiamando Send.

  • OnAccept: notifica a questo socket in ascolto che può accettare richieste di connessione in sospeso chiamando Accept.

  • On Connessione: notifica a questo socket di connessione che il tentativo di connessione è stato completato, ad esempio correttamente o forse in errore.

  • OnClose: notifica a questo socket che il socket a cui è connesso è chiuso.

    Nota

    Una funzione di notifica aggiuntiva è OnOutOfBandData. Questa notifica indica al socket ricevente che il socket di invio ha dati "fuori banda" da inviare. I dati fuori banda sono un canale logicamente indipendente associato a ogni coppia di socket di flusso connessi. Il canale fuori banda viene in genere usato per inviare dati "urgenti". MFC supporta i dati fuori banda. Gli utenti avanzati che usano la classe CAsyncSocket potrebbero dover usare il canale fuori banda, ma gli utenti della classe CSocket non possono usarlo. Il modo più semplice consiste nel creare un secondo socket per il passaggio di tali dati. Per altre 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 per tali eventi di rete di interesse per l'applicazione. Se si deriva una classe dalla classe CSocket, è possibile scegliere se eseguire l'override delle funzioni di notifica di interesse. È anche possibile usare CSocket se stesso, nel qual caso le funzioni di notifica per impostazione predefinita non eseguono alcuna operazione.

Queste funzioni sono funzioni di callback sostituibili. CAsyncSocket e CSocket convertire i messaggi in notifiche, ma è necessario implementare il modo in cui le funzioni di notifica rispondono se si desidera usarli. Le funzioni di notifica vengono chiamate al momento in cui il socket riceve una notifica di un evento di interesse, ad esempio la presenza di dati da leggere.

MFC chiama le funzioni di notifica per consentire di personalizzare il comportamento del socket al momento della notifica. Ad esempio, è possibile chiamare Receive dalla OnReceive funzione di notifica, ovvero quando si riceve una notifica che contiene dati da leggere, si chiama Receive per leggerli. Questo approccio non è necessario, ma è uno scenario valido. In alternativa, è possibile usare la funzione di notifica per tenere traccia dello stato di avanzamento, stampare messaggi TRACE e così via.

È possibile sfruttare queste notifiche eseguendo l'override delle funzioni di notifica in una classe socket derivata e fornendo un'implementazione.

Durante un'operazione, ad esempio la ricezione o l'invio di dati, un CSocket oggetto diventa sincrono. Durante lo stato sincrono, tutte le notifiche destinate ad altri socket vengono accodate mentre il socket corrente attende la notifica desiderata. Ad esempio, durante una Receive chiamata, il socket vuole che venga letta una notifica. Quando il socket completa l'operazione sincrona e diventa di nuovo asincrono, altri socket possono iniziare a ricevere le notifiche in coda.

Nota

In CSocketla OnConnect funzione di notifica non viene mai chiamata. Per le connessioni, chiamare Connect, che restituirà quando la connessione viene completata (correttamente o in errore). La modalità di gestione delle notifiche di connessione è un dettaglio di implementazione MFC.

Per informazioni dettagliate su ogni funzione di notifica, vedere la funzione in classe CAsyncSocket nella guida di riferimento MFC. Per codice sorgente e informazioni sugli esempi MFC, vedere Esempi MFC.

Per altre informazioni, vedere:

Vedi anche

Windows Sockets in MFC