Windows Sockets: Derivar de las clases de socket

En este artículo se describe parte de la funcionalidad que puede obtener derivando su propia clase de una de las clases de socket.

Puede derivar sus propias clases de socket de CAsyncSocket o CSocket para agregar su propia funcionalidad. En concreto, estas clases proporcionan una serie de funciones miembro virtuales que se pueden invalidar. Estas funciones incluyen OnReceive, OnSend, OnAccept, OnConnect y OnClose. Puede invalidar las funciones de la clase de socket derivada para aprovechar las notificaciones que proporcionan cuando se producen eventos de red. El marco llama a estas funciones de devolución de llamada de notificación para notificarle eventos de socket importantes, como la recepción de datos que puede comenzar a leer. Para más información sobre las funciones de notificación, vea Windows Sockets: notificaciones de socket.

Además, la clase CSocket proporciona la función miembro OnMessagePending (invalidable avanzada). MFC llama a esta función mientras el socket envía mensajes basados en Windows. Puede invalidar OnMessagePending para buscar mensajes concretos de Windows y responder a ellos.

La versión predeterminada de OnMessagePending proporcionada en la clase CSocket examina si hay mensajes WM_PAINT en la cola de mensajes mientras espera a que se complete una llamada de bloqueo. Envía mensajes de pintura para mejorar la calidad de la pantalla. Además de ser útil, ilustra una manera de invalidar la función usted mismo. Como otro ejemplo, considere la posibilidad de usar OnMessagePending para la siguiente tarea. Supongamos que muestra un cuadro de diálogo no modal mientras espera a que se complete una transacción de red. El cuadro de diálogo contiene un botón Cancelar que el usuario puede usar para cancelar las transacciones de bloqueo que tardan demasiado tiempo. La invalidación de OnMessagePending podría enviar mensajes relacionados con este cuadro de diálogo no modal.

En la invalidación de OnMessagePending, devuelva TRUE o la devolución de una llamada a la versión de clase base de OnMessagePending. Llame a la versión de clase base si realiza trabajo que aún quiera hacer.

Para más información, consulte:

Consulte también

Windows Sockets en MFC