Windows Sockets: Derivar de las clases de socketWindows Sockets: Deriving from Socket Classes

En este artículo se describen algunas de las funciones que puede obtener si derivan su propia clase de una de las clases de socket.This article describes some of the functionality you can gain by deriving your own class from one of the socket classes.

Puede derivar sus propias clases de socket de CAsyncSocket o CSocket para agregar su propia funcionalidad.You can derive your own socket classes from either CAsyncSocket or CSocket to add your own functionality. En concreto, estas clases proporcionan una serie de funciones miembro virtuales que se pueden invalidar.In particular, these classes supply a number of virtual member functions that you can override. Estas funciones incluyen alreceive, alsend, alaccept, alconnecty OnClose.These functions include OnReceive, OnSend, OnAccept, OnConnect, and OnClose. Puede invalidar las funciones de la clase Socket derivada para aprovechar las notificaciones que proporcionan cuando se producen eventos de red.You can override the functions in your derived socket class to take advantage of the notifications they provide when network events occur. El marco de trabajo llama a estas funciones de devolución de llamada de notificación para notificarle los eventos de socket importantes, como la recepción de datos que puede comenzar a leer.The framework calls these notification callback functions to notify you of important socket events, such as the receipt of data that you can begin reading. Para obtener más información sobre las funciones de notificación, vea Windows Sockets: notificaciones de socket.For more information about notification functions, see Windows Sockets: Socket Notifications.

Además, CSocket la clase proporciona la función miembro OnMessagePending (un Overridable avanzado).Additionally, class CSocket supplies the OnMessagePending member function (an advanced overridable). MFC llama a esta función mientras el socket está bombeando mensajes basados en Windows.MFC calls this function while the socket is pumping Windows-based messages. Puede invalidar OnMessagePending para buscar mensajes concretos de Windows y responder a ellos.You can override OnMessagePending to look for particular messages from Windows and respond to them.

La versión predeterminada de OnMessagePending proporcionada en CSocket la clase examina la cola de mensajes de WM_PAINT mensajes mientras se espera que se complete una llamada de bloqueo.The default version of OnMessagePending supplied in class CSocket examines the message queue for WM_PAINT messages while waiting for a blocking call to complete. Envía mensajes de Paint para mejorar la calidad de la pantalla.It dispatches paint messages to improve display quality. Aparte de hacer algo útil, esto ilustra una manera de que se pueda invalidar la función por su cuenta.Aside from doing something useful, this illustrates one way you might override the function yourself. Como otro ejemplo, considere OnMessagePending la posibilidad de usar para la siguiente tarea.As another example, consider using OnMessagePending for the following task. Supongamos que muestra un cuadro de diálogo no modal mientras espera a que se complete una transacción de red.Suppose you display a modeless dialog box while waiting for a network transaction to complete. 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.The dialog box contains a Cancel button that the user can use to cancel blocking transactions that take too long. La OnMessagePending invalidación podría bombear los mensajes relacionados con este cuadro de diálogo no modal.Your OnMessagePending override might pump messages related to this modeless dialog box.

En la OnMessagePending invalidación, devuelva true o el valor devuelto de una llamada a la versión de la clase base de OnMessagePending .In your OnMessagePending override, return either TRUE or the return from a call to the base-class version of OnMessagePending. Llame a la versión de la clase base si realiza el trabajo que todavía desea realizar.Call the base-class version if it performs work that you still want done.

Para más información, consulte:For more information, see:

Consulta tambiénSee also

Windows Sockets en MFCWindows Sockets in MFC