Compartilhar via


Soquetes do Windows: Notificações de soquete

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua sendo suportada. No entanto, não estamos mais adicionando recursos ou atualizando a documentação.

Este artigo descreve as funções de notificação nas classes de soquete. Essas funções de membro são funções de retorno de chamada que a estrutura chama para notificar o objeto de soquete de eventos importantes. As funções de notificação são:

  • OnReceive: notifica esse soquete de que há dados no buffer para que ele seja recuperado chamando Receive.

  • OnSend: notifica esse soquete de que agora ele pode enviar dados chamando Enviar.

  • OnAccept: notifica esse soquete de escuta de que ele pode aceitar solicitações de conexão pendentes chamando Accept.

  • OnConnect: notifica esse soquete de conexão que sua tentativa de conexão concluiu: talvez com êxito ou talvez em erro.

  • OnClose: Notifica este soquete de que o soquete ao qual está conectado foi fechado.

    Observação

    Uma função de notificação adicional é OnOutOfBandData. Essa notificação informa ao soquete de recebimento que o soquete de envio tem dados "fora de banda" a serem enviados. Os dados fora de banda são um canal logicamente independente associado a cada par de soquetes de fluxo conectados. O canal fora de banda normalmente é usado para enviar dados "urgentes". O MFC dá suporte a dados fora de banda. Usuários avançados que trabalham com a classe CAsyncSocket podem precisar usar o canal de dados fora de banda, mas desencoraja-se os usuários da classe CSocket de usá-lo. A maneira mais fácil é criar um segundo soquete para passar esses dados. Para obter mais informações sobre dados fora de banda, consulte a especificação do Windows Sockets, disponível no SDK do Windows.

Se você derivar da classe CAsyncSocket, deverá substituir as funções de notificação para esses eventos de rede de interesse para seu aplicativo. Se você derivar uma classe da classe CSocket, será sua escolha substituir as funções de notificação de interesse. Você também pode usar CSocket por si só, caso em que as funções de notificação, por padrão, não fazem nada.

Essas funções são funções de retorno de chamada substituíveis. CAsyncSocket e CSocket convertem mensagens em notificações, mas você deve implementar como as funções de notificação devem responder caso você queira usá-las. As funções de notificação são chamadas no momento que seu soquete é notificado de um evento de interesse, como a presença de dados a serem lidos.

O MFC chama as funções de notificação para permitir que você personalize o comportamento do soquete no momento em que ele é notificado. Por exemplo, você pode chamar Receive de sua OnReceive função de notificação, ou seja, ao ser notificado de que há dados a serem lidos, você chama Receive para lê-la. Essa abordagem não é necessária, mas é um cenário válido. Como alternativa, você pode usar sua função de notificação para acompanhar o progresso, imprimir mensagens TRACE e assim por diante.

Você pode aproveitar essas notificações substituindo as funções de notificação em uma classe de soquete derivada e fornecendo uma implementação.

Durante uma operação como receber ou enviar dados, um CSocket objeto se torna síncrono. Durante o estado síncrono, todas as notificações destinadas a outros soquetes são enfileiradas enquanto o soquete atual aguarda a notificação desejada. (Por exemplo, durante uma chamada Receive, o soquete deseja que uma notificação seja lida.) Depois que o soquete concluir sua operação síncrona e se tornar assíncrono novamente, outros soquetes poderão começar a receber as notificações enfileiradas.

Observação

Em CSocket, a função de notificação OnConnect nunca é chamada. Para conexões, você chama Connect, que retornará quando a conexão for concluída (com êxito ou erro). A forma como as notificações de conexão são tratadas é um detalhe de implementação do MFC.

Para obter detalhes sobre cada função de notificação, consulte a função em classe CAsyncSocket na Referência do MFC. Para obter código-fonte e informações sobre exemplos de MFC, consulte Exemplos de MFC.

Para obter mais informações, consulte:

Consulte também

Soquetes do Windows no MFC