recv
9/8/2008
Essa função recebe dados de uma Soquete conectado.
Syntax
int recv(
SOCKET s,
char FAR* buf,
int len,
int flags
);
Parameters
- s
[no] Descritor identificando um Soquete conectado.
- buf
[out] Buffer para o de entrada dados.
- Len
[no] Comprimento das buf parâmetro.
- Sinalizadores
[no] Sinalizador especificando a maneira na qual o chamar é feita.
Return Value
Se não houver erro, essa função retorna o número de bytes recebidos. Se a conexão foi fechada normalmente, o valor de retorno é zero. Se um erro ocorrer, será retornado um valor de SOCKET_ERROR, e um código de erro específicos podem ser recuperadas por chamado WSAGetLastError. A seguinte tabela mostra uma lista dos códigos de erro possível.
Código de erro | Descrição |
---|---|
WSANOTINITIALISED |
Um bem-sucedido WSAStartup chamar deve ocorrer antes de usar essa função. |
WSAENETDOWN |
Falha no subsistema da rede. |
WSAEFAULT |
O buf parâmetro não está completamente contido em um válido parte espaço de endereço o usuário. |
WSAENOTCONN |
O Soquete não está conectado. |
WSAEINTR |
O Soquete foi fechada. |
WSAEINPROGRESS |
Um bloqueio é chamar sockets do Windows (Winsock) em andamento, ou o serviço provedor ainda é processamento um função callback. |
WSAENETRESET |
A conexão foi interrompida devido a a keep-alive atividade detectar uma falha enquanto a operação foi em andamento. |
WSAENOTSOCK |
O descritor não é um Soquete. MSG_OOB WSAEOPNOTSUPP foi especificado, mas o Soquete não é estilo transmitir such as tipo SOCK_STREAM, out of banda (OOB) dados Não Não com suporte no domínio de comunicação associado com este Soquete, ou o Soquete é unidirecional e oferece suporte a operações de envio somente. |
WSAESHUTDOWN |
O Soquete foi desligado; Não é possível receber um Soquete depois desligamento Tem sido chamado com Como Definido como SD_RECEIVE ou SD_BOTH. |
WSAEWOULDBLOCK |
O Soquete é marcado como de não bloqueio e o operação de recebimento seria bloco. |
WSAEMSGSIZE |
A mensagem era muito grande para caber na reserva especificada e foi truncada. |
WSAEINVAL |
O Soquete não foi ligado com BIND (Soquetes do Windows), um sinalizador desconhecido foi especificada, MSG_OOB foi especificada para um Soquete com SO_OOBINLINE habilitado ou (para fluxo de bytes soquetes apenas) Len era zero ou negativos. |
WSAECONNABORTED |
O circuito virtual foi finalizado devido a um tempo limite ou outra falha. O aplicativo deve fechar o Soquete como ele não está mais utilizável. |
WSAETIMEDOUT |
A conexão foi descartada because of falha uma rede ou porque o sistema de mesmo nível falha para responder. |
WSAECONNRESET |
O circuito virtual foi redefinir pelo remoto lado executar fechar um disco rígido ou abortive. O aplicativo deve fechar o Soquete porque ele não é utilizável. |
Remarks
Essa função é usada para ler de entrada dados em soquetes Connection-Oriented ou sem conexão soquetes. Ao usar um protocolo Connection-Oriented, os soquetes devem estar conectados antes chamado essa função. Ao usar um sem conexão protocolo, os soquetes devem estar ligado antes chamado essa função.
O local endereço do Soquete deve ser conhecido. Para aplicativos servidor, use um explícita BIND (Soquetes do Windows) função ou um implícita aceitar (Soquetes do Windows) Ou WSAAccept função. Ligação explícita não é recomendada para aplicativos cliente. Para aplicativos cliente, o Soquete pode se tornar ligado implicitamente para um local usando endereço conectar (Soquetes do Windows), WSAConnect, SendTo, ou WSASendTo.
Para conectado ou sem conexão soquetes, o Recv função restringe os endereços da qual as mensagens recebidas serão aceitas. A função retornará somente mensagens do remoto endereço especificado na conexão. Mensagens de outros endereços (silenciosamente) são descartadas.
Para os soquetes orientado à conexão (tipo SOCK_STREAMPara exemplo), chamado Recv Retornará o máximo de informações como está atualmente disponível — up to o tamanho da reserva fornecida. Para sem conexão soquetes (tipo SOCK_DGRAM OU OUTROS soquetes orientado a mensagem), dados são extraídos da datagrama enfileirados primeira (mensagem) a partir de endereço de destino especificado pelo conectar função.
Se o datagrama ou mensagem for maior do que a reserva fornecida, a reserva é preenchida com a primeira parte a datagrama e Recv Gera o Erro WSAEMSGSIZE. Para não confiável protocolos (por exemplo, UDP), o dados em excesso é perdida; Para seguro protocolos, os dados é mantida pelo provedor de serviço até que ela seja com êxito ler por chamado Recv Com uma reserva grande o suficiente.
Se nenhuma de entrada dados está disponível no Soquete, o Recv função chamar bloqueia e aguarda dados para chegar de acordo com o bloqueio regras definidas para WSARecv Com o sinalizador MSG_PARTIAL não definida, a menos que seja o Soquete de não bloqueio. Este maiúsculas e minúsculas, um valor de SOCKET_ERROR será retornado com o código de erro definido como WSAEWOULDBLOCK. O Selecione Ou WSAEventSelect funções podem ser usadas para determinar quando chegarem mais dados.
Se o Soquete for orientado à conexão, o remoto lado tem desligue a conexão normalmente e todos os dados foram recebidos, um Recv função será completo imediatamente com zero bytes recebidos. Se a conexão tiver sido redefinir, um Recv função falhará com o erro WSAECONNRESET.
O Sinalizadores parâmetro pode ser usado para influenciam o comportamento das Recv função chamada além de opções especificadas para o associado Soquete. A seguinte tabela mostra os sinalizadores no provedor de serviço usar como padrão que Windows Embedded CE não suporte (embora talvez outros provedores suporte-las).
Valor | Descrição |
---|---|
MSG_PEEK |
Exibe a de entrada dados. Os dados são copiados para a reserva, mas não são removidos da entrada fila. A função, em seguida, retorna o número de bytes atualmente pendente para receber. |
MSG_OOB |
Processa dados OOB. |
Se um aplicativo cliente é executar em um computador com uma implementação TCP/IP que não define o bit enviar nas operações de envio, resposta atrasos pode resultar. É melhor corrigir isso sobre o cliente; No entanto, IgnorePushBitOnReceives, foi adicionada ao Afd.sys no 4.0 ® Windows NT ® Microsoft e Microsoft ® Windows ® 2000 para forçá-lo para tratar Todas as chegam pacotes à medida que o bit enviar foram definidas. Windows Embedded CE não tem suporte IgnorePushBitOnReceives.
Para obter mais inforamtion sobre suporte IrDA no Windows Embedded CE, consulte Comunicação via infravermelho.
Requirements
Header | winsock2.h |
Library | Ws2.lib |
Windows Embedded CE | Windows CE 1.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |
See Also
Reference
accept (Windows Sockets)
bind (Windows Sockets)
connect (Windows Sockets)
ioctlsocket
recvfrom
select
send
sendto
shutdown
socket (Windows Sockets)
WSAAccept
WSAConnect
WSAEventSelect
WSAGetLastError
WSAIoctl
WSARecv
WSASendTo
WSAStartup