Voltar à lista
Linux x86_64Rede & sockets#45

recvfrom

Recebe dados de um socket, opcionalmente capturando o endereço de origem (sockets sem conexão).

Descrição

Contraparte de leitura de `sendto`.

Header: sys/socket.hman 2

Assinatura

ssize_t recvfrom(
    int sockfd,
    void * buf,
    size_t len,
    int flags,
    struct sockaddr * src_addr,
    socklen_t * addrlen
);

Parâmetros

ParâmetroTipoDescrição
sockfdintDescritor do socket.
bufvoid *Buffer de destino para os dados recebidos.
lensize_tCapacidade de `buf` em bytes.
flagsintMSG_DONTWAIT, MSG_PEEK, MSG_WAITALL, etc.
src_addrstruct sockaddr *Se não for NULL, recebe o endereço de origem.
addrlensocklen_t *Tamanho de `src_addr`; atualizado com o tamanho real.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1sockfdint
rsiargumento 2bufvoid *
rdxargumento 3lensize_t
r10argumento 4flagsint
r8argumento 5src_addrstruct sockaddr *
r9argumento 6addrlensocklen_t *

Valor de retorno

Número de bytes recebidos (0 indica que o par fechou a conexão) em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EAGAIN(11)
Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
ECONNRESET(104)
Conexão resetada pelo par (peer).
EINTR(4)
Chamada interrompida por um sinal.
ENOTCONN(107)
Socket não conectado.

Relacionadas