Compartir a través de


Windows Sockets: Notificaciones de Socket

Nota:

La biblioteca Microsoft Foundation Classes (MFC) sigue siendo compatible. Sin embargo, ya no estamos agregando características ni actualizando la documentación.

En este artículo se describen las funciones de notificación en las clases de socket. Estas funciones miembro son funciones de devolución de llamada a las que llama el marco para notificar al objeto de socket eventos importantes. Las funciones de notificación son:

  • OnReceive: notifica a este socket que hay datos en el búfer para que los recupere llamando a Receive.

  • OnSend: notifica a este socket que ahora puede enviar datos llamando a Send.

  • OnAccept: notifica a este socket de escucha que puede aceptar solicitudes de conexión pendientes llamando a Accept.

  • OnConnect: notifica a este socket de conexión que se ha completado su intento de conexión: quizás correctamente o quizás en error.

  • OnClose: notifica a este socket que el socket al que está conectado se ha cerrado.

    Nota:

    Una función de notificación adicional es OnOutOfBandData. Esta notificación indica al socket receptor que el socket de envío tiene datos "fuera de banda" que enviar. Los datos fuera de banda son un canal lógicamente independiente asociado a cada par de sockets de flujo conectados. Normalmente, el canal fuera de banda se usa para enviar datos "urgentes". MFC admite datos fuera de banda. Es posible que los usuarios avanzados que trabajan con la clase CAsyncSocket necesiten usar el canal fuera de banda, pero no se recomienda que los usuarios de la clase CSocket lo usen. Es más fácil crear un segundo socket para pasar esos datos. Para obtener más información sobre los datos fuera de banda, consulte la especificación de Windows Sockets, disponible en Windows SDK.

Si deriva de la clase CAsyncSocket, debe invalidar las funciones de notificación de esos eventos de red de interés para la aplicación. Si deriva una clase de la clase CSocket, puede elegir si desea sobrescribir las funciones de notificación que le interesen. También puede usarse CSocket , en cuyo caso las funciones de notificación no hacen nada de forma predeterminada.

Estas funciones son funciones de devolución de llamada reemplazables. CAsyncSocket y CSocket convierten mensajes en notificaciones, pero deben implementar cómo responden las funciones de notificación si desean usarlas. Las funciones de notificación se llaman en el momento en que el socket recibe una notificación de un evento de interés, como la disponibilidad de datos para leer.

MFC llama a las funciones de notificación para que se pueda personalizar el comportamiento del socket en el momento en que recibe la notificación. Por ejemplo, puede llamar a Receive desde su función de notificación OnReceive, es decir, al recibir una notificación de que hay datos que se van a leer, llama a Receive para leerlos. Este enfoque no es necesario, pero es un escenario válido. Como alternativa, puede usar la función de notificación para realizar un seguimiento del progreso, imprimir mensajes TRACE , etc.

Puede aprovechar estas notificaciones sobrescribiendo las funciones de notificación en una clase de socket derivada y proporcionando una implementación.

Durante una operación como recibir o enviar datos, un CSocket objeto se vuelve sincrónico. 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. (Por ejemplo, durante una Receive llamada, el socket quiere recibir una notificación para leer). 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 pendientes.

Nota:

En CSocket, nunca se llama a la función de notificación OnConnect. Para las conexiones, llame a Connect, que devolverá cuando la conexión se complete (ya sea con éxito o con un error). La forma en que se controlan las notificaciones de conexión es un detalle de implementación de MFC.

Para obtener más información sobre cada función de notificación, consulte la función en la clase CAsyncSocket en la referencia de MFC. Para obtener código fuente e información sobre ejemplos de MFC, consulte Ejemplos de MFC.

Para obtener más información, consulte:

Consulte también

Windows Sockets en MFC