recvfrom

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função recebe uma datagrama e armazena o endereço origem.

Syntax

int recvfrom(
  SOCKET s,
  char FAR* buf,
  int len,
  int flags,
  struct sockaddr FAR* from,
  int FAR* fromlen
);

Parameters

  • s
    [no] Descritor identificando um ligado Soquete.
  • buf
    [out] Buffer para o de entrada dados.
  • Len
    [no] Comprimento das buf parâmetro.
  • Sinalizadores
    [no] Indicador especificando a maneira na qual o chamar é feita.
  • a partir
    [out] Opcional ponteiro para uma reserva que conterá o endereço origem no retorno.
  • fromlen
    [in, Out] Ponteiro opcional para o tamanho das a partir reserva.

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 Ou a partir Parâmetros não fazem parte de espaço de endereço de usuário, ou a fromlen parâmetro é muito pequeno para acomodar o endereço de mesmo nível.

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.

WSAEINVAL

O Soquete não foi ligado com BIND (Soquetes do Windows), um sinalizador desconhecido foi especificada, MSG_OOB foi especificado para um Soquete com SO_OOBINLINE habilitado, ou (para fluxo de bytes-estilo soquetes apenas) Len era zero ou negativos.

WSAEISCONN

O Soquete está conectado. O recvfrom função não é permitida com um Soquete conectado, se o Soquete é orientado por conexão ou sem conexão.

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 chamar recvfrom Em um Soquete depois desligamento Tem sido chamado com Como Definido como SD_RECEIVE ou SD_BOTH.

WSAEWOULDBLOCK

O Soquete está marcado como de não bloqueio e o recvfrom operação seria bloco.

WSAEMSGSIZE

A mensagem era muito grande para caber na reserva especificada e foi truncada.

WSAETIMEDOUT

A conexão foi descartada because of falha uma rede ou porque o sistema na outra extremidade entrou pressionada sem aviso.

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

Esta função lê de entrada dados em soquetes tanto conectados desconectados e captura o endereço de onde os dados foi enviados. O local endereço do Soquete deve ser conhecido. Para aplicativos servidor, isso geralmente é feito explicitamente através BIND (Soquetes do Windows). Ligação explícita não é recomendada para aplicativos cliente. Para aplicativos cliente usando essa função, o Soquete pode se tornar ligado implicitamente para um local endereço através de SendTo, ou WSASendTo.

Para os soquetes fluxo-orientado a tais como aquelas de tipo SOCK_STREAM, um chamar para recvfrom Retorna o máximo de informações como está atualmente disponível — up to o tamanho da reserva fornecida. Se a Soquete foi configurado para recepção interno do out of dados banda (OOB) (opção Soquete SO_OOBINLINE) e dados OOB for ainda não lidas, somente dados OOB serão retornados. O aplicativo pode usar o ioctlsocket Ou WSAIoctl Comando SIOCATMARK função para determinar se os dados mais OOB permanecem serem ler. O a partir e fromlen parâmetros são ignorados para Soquetes orientado por conexão.

Para soquetes orientado a mensagem, dados são extraídos da primeira mensagem enfileirados, up to o tamanho da reserva fornecida. Se o datagrama ou mensagem for maior do que a reserva fornecida, a reserva é preenchida com a primeira parte a datagrama e recvfrom Gera o Erro WSAEMSGSIZE. Para não confiável protocolos (por exemplo, UDP) a dados em excesso serão perdida.

Se a pasta a partir parâmetro é o Soquete e diferente de zero não orientado à conexão, (tipo SOCK_DGRAMPara exemplo), o endereço rede de outro computador na rede que enviou os dados é copiado para o correspondente sockaddr estrutura. O valor apontado pelo fromlen é inicializado para o tamanho dessa estrutura e é modificado, em retorno, para indicar o real tamanho do endereço armazenado na sockaddr estrutura.

Se nenhuma de entrada dados está disponível no Soquete, o recvfrom função 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ção pode ser usada para determinar quando chegarem mais dados.

Se o Soquete for orientado à conexão e o remoto lado foi desligado a conexão normalmente, a chamar para recvfrom Será completo imediatamente com zero bytes recebidos. Se a conexão tiver sido redefinir, recvfrom falhará com o erro WSAECONNRESET.

O Sinalizadores parâmetro pode ser usado para influenciam o comportamento da chamada de função além de opções especificadas para o associado Soquete. A semântica das recvfrom função são determinadas pelas opções de Soquete e o Sinalizadores parâmetro. A seguinte tabela mostra os valores podem ser usados para construção o parâmetro sinalizadores. O operador bit a bit OR é aplicada a esses valores.

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 e a função retorna o número de bytes atualmente pendente para receber.

MSG_OOB

Processa dados OOB. (Consulte seção DECnet Out - de - banda dados para uma discussão deste tópico).

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

bind (Windows Sockets)
ioctlsocket
recv
select
send
sendto
shutdown
socket (Windows Sockets)
WSAEventSelect
WSAGetLastError
WSAIoctl
WSARecv
WSASendTo
WSAStartup