Windows Sockets: Notificaciones de SocketWindows Sockets: Socket Notifications

En este artículo se describen las funciones de notificación de las clases de socket.This article describes the notification functions in the socket classes. Estas funciones miembro son funciones de devolución de llamada que el marco llama para notificar a su objeto de socket los eventos importantes.These member functions are callback functions that the framework calls to notify your socket object of important events. Las funciones de notificación son:The notification functions are:

  • Alreceive: notifica a este socket que hay datos en el búfer para que los recupere mediante una llamada a Receive.OnReceive: Notifies this socket that there is data in the buffer for it to retrieve by calling Receive.

  • Alsend: notifica a este socket que ahora puede enviar datos llamando a send.OnSend: Notifies this socket that it can now send data by calling Send.

  • Alaccept: notifica a este socket de escucha que puede aceptar solicitudes de conexión pendientes llamando a Accept.OnAccept: Notifies this listening socket that it can accept pending connection requests by calling Accept.

  • Alconnect: notifica a este socket de conexión que se ha completado su intento de conexión: quizás correctamente o quizás por error.OnConnect: Notifies this connecting socket that its connection attempt completed: perhaps successfully or perhaps in error.

  • OnClose: notifica a este socket que el socket al que está conectado se ha cerrado.OnClose: Notifies this socket that the socket it is connected to has closed.

    Nota

    Una función de notificación adicional es OnOutOfBandData.An additional notification function is OnOutOfBandData. Esta notificación indica al socket de recepción que el socket de envío tiene datos "fuera de banda" que se van a enviar.This notification tells the receiving socket that the sending socket has "out-of-band" data to send. Los datos fuera de banda son un canal lógicamente independiente asociado a cada par de sockets de secuencias conectados.Out-of-band data is a logically independent channel associated with each pair of connected stream sockets. El canal fuera de banda se usa normalmente para enviar datos "urgentes".The out-of-band channel is typically used to send "urgent" data. MFC admite datos fuera de banda.MFC supports out-of-band data. Los usuarios avanzados que trabajan con la clase CAsyncSocket podrían necesitar usar el canal fuera de banda, pero no se recomienda que los usuarios de la clase CSocket lo utilicen.Advanced users working with class CAsyncSocket might need to use the out-of-band channel, but users of class CSocket are discouraged from using it. La forma más sencilla consiste en crear un segundo socket para pasar estos datos.The easier way is to create a second socket for passing such data. Para obtener más información acerca de los datos fuera de banda, vea la especificación de Windows Sockets, disponible en el Windows SDK.For more information about out-of-band data, see the Windows Sockets specification, available in the Windows SDK.

Si deriva de la clase CAsyncSocket, debe invalidar las funciones de notificación para los eventos de red de interés para la aplicación.If you derive from class CAsyncSocket, you must override the notification functions for those network events of interest to your application. Si deriva una clase de la clase CSocket, es su elección si desea invalidar las funciones de notificación de interés.If you derive a class from class CSocket, it is your choice whether to override the notification functions of interest. También puede usar CSocket, en cuyo caso las funciones de notificación tienen como valor predeterminado no hacer nada.You can also use CSocket itself, in which case the notification functions default to doing nothing.

Estas funciones son funciones de devolución de llamada que se pueden reemplazar.These functions are overridable callback functions. CAsyncSocket y CSocket convertir mensajes en notificaciones, pero debe implementar el modo en que las funciones de notificación responden si desea usarlas.CAsyncSocket and CSocket convert messages to notifications, but you must implement how the notification functions respond if you wish to use them. Se llama a las funciones de notificación en el momento en que el socket recibe una notificación de un evento de interés, como la presencia de datos que se van a leer.The notification functions are called at the time your socket is notified of an event of interest, such as the presence of data to be read.

MFC llama a las funciones de notificación para permitirle personalizar el comportamiento del socket en el momento en que se le notifica.MFC calls the notification functions to let you customize your socket's behavior at the time it is notified. Por ejemplo, podría llamar a Receive desde la función de notificación de OnReceive, es decir, cuando se le notifique que hay datos que leer, llame a Receive para leerlo.For example, you might call Receive from your OnReceive notification function, that is, on being notified that there is data to read, you call Receive to read it. Este enfoque no es necesario, pero es un escenario válido.This approach is not necessary, but it is a valid scenario. Como alternativa, puede usar la función de notificación para realizar el seguimiento del progreso, imprimir los mensajes de seguimiento , etc.As an alternative, you might use your notification function to track progress, print TRACE messages, and so on.

Puede aprovechar estas notificaciones invalidando las funciones de notificación en una clase de socket derivada y proporcionando una implementación.You can take advantage of these notifications by overriding the notification functions in a derived socket class and providing an implementation.

Durante una operación como la recepción o el envío de datos, una CSocket objeto se vuelve sincrónicamente.During an operation such as receiving or sending data, a CSocket object becomes synchronous. Durante el estado sincrónico, las notificaciones destinadas a otros Sockets se ponen en cola mientras el socket actual espera la notificación que desea.During the synchronous state, any notifications meant for other sockets are queued while the current socket waits for the notification it wants. (Por ejemplo, durante una llamada Receive, el socket desea que se lea una notificación). Una vez que el socket completa su operación sincrónica y vuelve a ser asincrónico, otros Sockets pueden empezar a recibir las notificaciones en cola.(For example, during a Receive call, the socket wants a notification to read.) Once the socket completes its synchronous operation and becomes asynchronous again, other sockets can begin receiving the queued notifications.

Nota

En CSocket, nunca se llama a la función de notificación de OnConnect.In CSocket, the OnConnect notification function is never called. En el caso de las conexiones, se llama a Connect, que devolverá cuando se complete la conexión (ya sea correctamente o con errores).For connections, you call Connect, which will return when the connection is completed (either successfully or in error). Cómo se controlan las notificaciones de conexión es un detalle de la implementación de MFC.How connection notifications are handled is an MFC implementation detail.

Para obtener más información sobre cada función de notificación, vea la función en la CAsyncSocket de clase en la referencia de MFC.For details about each notification function, see the function under class CAsyncSocket in the MFC Reference. Para obtener código fuente e información sobre los ejemplos de MFC, vea ejemplos de MFC.For source code and information about MFC samples, see MFC Samples.

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

Consulte tambiénSee also

Windows Sockets en MFCWindows Sockets in MFC