Partilhar via


Windows Sockets: Derivação de Classes de Soquete

Este artigo descreve algumas das funcionalidades que você pode obter derivando sua própria classe de uma das classes de soquete.

Você pode derivar suas próprias classes de soquete de CAsyncSocket ou CSocket para adicionar sua própria funcionalidade. Em particular, essas classes fornecem várias funções de membro virtual que você pode substituir. Essas funções incluem OnReceive, OnSend, OnAccept, OnConnect e OnClose. Você pode substituir as funções em sua classe de soquete derivada para aproveitar as notificações que elas fornecem quando ocorrem eventos de rede. A estrutura chama essas funções de retorno de chamada de notificação para notificá-lo de eventos de soquete importantes, como o recebimento de dados que você pode começar a ler. Para obter mais informações sobre funções de notificação, consulte Windows Sockets: notificações de soquete.

Além disso, a classe CSocket fornece a função de membro OnMessagePending (um avançado substituível). MFC chama esta função enquanto o soquete está processando mensagens do Windows. Você pode substituir OnMessagePending para procurar mensagens específicas do Windows e responder a elas.

A versão padrão de OnMessagePending fornecida na classe CSocket examina a fila de mensagens em busca de mensagens WM_PAINT enquanto aguarda a conclusão de uma chamada de bloqueio. Ele envia mensagens de pintura para melhorar a qualidade da exibição. Além de fazer algo útil, isso ilustra uma maneira pela qual você mesmo pode substituir a função. Como outro exemplo, considere usar OnMessagePending para a tarefa a seguir. Suponha que você exiba uma caixa de diálogo sem janela restrita enquanto aguarda a conclusão de uma transação de rede. A caixa de diálogo contém um botão Cancelar que o usuário pode usar para cancelar transações de bloqueio que levam muito tempo. Sua OnMessagePending substituição pode bombear mensagens relacionadas a essa caixa de diálogo sem moderação.

Na sua substituição OnMessagePending, retorne TRUE ou o resultado de uma chamada à versão da classe base de OnMessagePending. Chame a versão de classe base se ela executar o trabalho que você ainda deseja fazer.

Para obter mais informações, consulte:

Ver também

Windows Sockets no MFC