CAsyncSocket::Receive

telefonar Essa função de membro para receber dados de um soquete.

virtual int Receive(
   void* lpBuf,
   int nBufLen,
   int nFlags = 0 
);

Parâmetros

  • lpBuf
    Um buffer de dados de entrada.

  • nBufLen
    O comprimento de lpBuf em bytes.

  • nFlags
    Especifica a maneira na qual a telefonar é feita.A semântica dessa função é determinada pelas opções de soquete e o nFlags parâmetro. A segunda é construída pela combinação de qualquer um dos seguintes valores com o C++ OR operador:

    • MSG_PEEK   Inspecione os dados de entrada.Os dados são copiados para o buffer, mas não são removidos da fila de entrada.

    • MSG_OOB   Processar dados fora de banda.

Valor de retorno

Se não houver erro, Receber retorna o número de bytes recebidos.Se a conexão foi fechada, ela retornará 0.Caso contrário, um valor de SOCKET_ERROR é retornado e um código de erro específico pode ser recuperado chamando GetLastError.Os seguintes erros se aplicam a essa função de membro:

  • WSANOTINITIALISED   Um bem-sucedida AfxSocketInit deve ocorrer antes de usar essa API.

  • WSAENETDOWN   A implementação do Windows Sockets detectou que o subsistema de rede falhou.

  • WSAENOTCONN   O soquete não está conectado.

  • WSAEINPROGRESS   Uma operação de bloqueio de Windows Sockets está em andamento.

  • WSAENOTSOCK   O descritor não é um soquete.

  • WSAEOPNOTSUPP   MSG_OOB foi especificado, mas o soquete não é do tipo SOCK_STREAM.

  • WSAESHUTDOWN   O soquete foi desligado; não é possível chamar Receber em um soquete após ShutDown foi chamado com nHow conjunto a 0 ou 2.

  • WSAEWOULDBLOCK   O soquete está marcado sistema autônomo não bloqueadas e o Receber operação bloquearia.

  • WSAEMSGSIZE   O datagrama era muito grande ajuste no buffer especificado e foi truncado.

  • WSAEINVAL   O soquete não foi limite com BIND.

  • WSAECONNABORTED   O circuito virtual foi anulado devido ao tempo limite ou Outros falha.

  • WSAECONNRESET   O circuito virtual foi redefinido pelo lado remoto.

Comentários

Esta função é usada para fluxo conectado ou soquetes datagrama e é usada para ler dados de entrada.

Para soquetes do tipo SOCK_STREAM, sistema autônomo informações está disponível no momento para o dimensionar do buffer fornecido é retornado.Se o soquete foi configurado para recepção de in-linha de dados fora de banda (soquete opção SO_OOBINLINE) e dados fora de banda não lidos, out-of-band somente os dados serão retornados.The application can use the IOCtl SIOCATMARK option or OnOutOfBandData to determine whether any more out-of-band data remains to be read.

Para soquetes do datagrama, dados são extraídos do datagrama enfileirado primeiro, backup para o dimensionar do buffer fornecido.Se o datagrama é maior do que o buffer fornecido, o buffer é preenchido com a primeira parte do datagrama, os dados em excesso serão perdidos e Receber retorna um valor de SOCKET_ERROR com o código de erro conjunto para WSAEMSGSIZE.Se nenhum dado de entrada estiver disponível no soquete, um valor de SOCKET_ERROR é retornado com o código de erro definido como WSAEWOULDBLOCK.The OnReceivefunção de retorno de chamada pode ser usada para determinar quando chegam mais dados.

Se o soquete de digite SOCK_STREAM e o lado remoto encerrou a conexão normalmente, um Receber concluirá imediatamente com 0 bytes recebidos.Se a conexão foi redefinida, um Receber falhará com o erro WSAECONNRESET.

Receber deve ser chamado somente uma vez para cada time CAsyncSocket::OnReceive é chamado.

Exemplo

Consulte o exemplo para CAsyncSocket::OnReceive.

Requisitos

Cabeçalho: afxsock.h

Consulte também

Referência

Classe CAsyncSocket

Gráfico de hierarquia

CAsyncSocket::AsyncSelect

CAsyncSocket::criar

CAsyncSocket::ReceiveFrom

CAsyncSocket::enviar

Outros recursos

CAsyncSocket membros