Compartilhar via


Windows Sockets: derivando 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 de CSocket para adicionar sua própria funcionalidade. Em especial, essas classes fornecem várias funções membro virtuais 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 notificar você sobre 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 membro OnMessagePending (uma substituição avançada). O MFC chama essa função enquanto o soquete está bombeando mensagens baseadas no Windows. Você pode substituir OnMessagePending para procurar mensagens específicas do Windows e responder a elas.

A versão padrão do OnMessagePending fornecido na classe CSocket examina a fila de mensagens quanto a mensagens WM_PAINT enquanto aguarda a conclusão de uma chamada de bloqueio. Ela envia mensagens de pintura para melhorar a qualidade da exibição. Além de fazer algo útil, isso ilustra uma maneira de substituir a função por conta própria. Como outro exemplo, considere usar OnMessagePending para a tarefa a seguir. Suponha que você exiba uma caixa de diálogo sem modo 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 tempo demais. Sua substituição de OnMessagePending pode bombear mensagens relacionadas a essa caixa de diálogo sem modo.

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

Para saber mais, veja:

Confira também

Windows Sockets em MFC