Compartilhar via


Soquetes do Windows: Notificações de soquete

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 esse soquete ao qual ele 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 fora de banda, mas os usuários da classe CSocket não são desencorajados a 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 a si mesmo, caso em que as funções de notificação não fazem nada.

Essas funções são funções de retorno de chamada substituíveis. CAsyncSocket e CSocket converta mensagens em notificações, mas você deve implementar como as funções de notificação respondem se você quiser usá-las. As funções de notificação são chamadas no momento em que o 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 Receive chamada, 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 na fila.

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