Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo descreve as funções de notificação nas classes de soquete. Estas funções membro são funções de callback que o framework chama para notificar o seu objeto socket de eventos importantes. As funções de notificação são:
OnReceive: Notifica este soquete de que há dados no buffer para que ele recupere chamando Receive.
OnSend: Notifica esse soquete de que agora ele pode enviar dados chamando Send.
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 foi concluída: talvez com êxito ou talvez por engano.
OnClose: Notifica este soquete de que o soquete ao qual ele está conectado fechou.
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" para enviar. 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". MFC suporta dados fora de banda. Os 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 são desencorajados 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 Windows Sockets, disponível no SDK do Windows.
Se você derivar da classe CAsyncSocket, deverá substituir as funções de notificação para os eventos de rede de interesse para seu aplicativo. Se derivar uma classe da classe CSocket, é da sua escolha se quer substituir as funções de notificação que lhe interessam. Você também pode usar CSocket a si mesmo, 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 converter mensagens em notificações, mas você deve implementar como as funções de notificação respondem se desejar 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, podes chamar Receive a partir da tua função de notificação OnReceive, ou seja, ao seres notificado de que há dados para ler, chamas Receive para os ler. Esta 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 torna-se 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.) Quando 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
No CSocket, a função de OnConnect notificação nunca é chamada. Para conexões, você chama Connect, que retornará quando a conexão for concluída (com êxito ou por erro). 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 MFC. Para obter código-fonte e informações sobre exemplos de MFC, consulte Exemplos de MFC.
Para obter mais informações, consulte: