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