Windows Sockets: derivazione dalle classi Socket
Questo articolo descrive alcune delle funzionalità che è possibile ottenere derivando la propria classe da una delle classi socket.
È possibile derivare classi socket personalizzate da CAsyncSocket o CSocket per aggiungere funzionalità personalizzate. In particolare, queste classi forniscono una serie di funzioni membro virtuali che è possibile eseguire l'override. Queste funzioni includono OnReceive, OnSend, OnAccept, On Connessione e OnClose. È possibile eseguire l'override delle funzioni nella classe socket derivata per sfruttare le notifiche fornite quando si verificano eventi di rete. Il framework chiama queste funzioni di callback di notifica per notificare eventi socket importanti, ad esempio la ricezione di dati che è possibile iniziare a leggere. Per altre informazioni sulle funzioni di notifica, vedere Windows Sockets: Socket Notifications.For more information about notification functions, see Windows Sockets: Socket Notifications.
Inoltre, la classe CSocket
fornisce la funzione membro OnMessagePending (un'istruzione di override avanzata). MFC chiama questa funzione mentre il socket sta pompando messaggi basati su Windows. È possibile eseguire l'override OnMessagePending
per cercare determinati messaggi da Windows e rispondere.
La versione predefinita di fornita nella classe CSocket
esamina la coda dei OnMessagePending
messaggi per WM_PAINT messaggi durante l'attesa del completamento di una chiamata di blocco. Invia messaggi di disegno per migliorare la qualità della visualizzazione. Oltre a fare qualcosa di utile, questo illustra un modo per eseguire l'override della funzione manualmente. Come altro esempio, è consigliabile usare OnMessagePending
per l'attività seguente. Si supponga di visualizzare una finestra di dialogo senza modalità durante l'attesa del completamento di una transazione di rete. La finestra di dialogo contiene un pulsante Annulla che l'utente può usare per annullare le transazioni di blocco che richiedono troppo tempo. L'override OnMessagePending
potrebbe pompare i messaggi correlati a questa finestra di dialogo senza modalità.
Nell'override OnMessagePending
restituire TRUE o restituire da una chiamata alla versione della classe base di OnMessagePending
. Chiamare la versione della classe base se esegue il lavoro che si vuole eseguire.
Per altre informazioni, vedere: