recvfrom
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