Voltar à lista
Linux x86_64Rede & sockets#42

connect

Estabelece conexão de um socket a um endereço remoto (ou associa um socket datagrama a um destino padrão).

Descrição

Para sockets orientados a conexão (TCP), inicia o handshake com o par remoto. Para sockets datagrama (UDP), apenas fixa o endereço padrão de destino/origem para send/recv subsequentes, sem enviar nada pela rede.

Header: sys/socket.hman 2

Nota

Em sockets não bloqueantes, é comum e esperado retornar -1/EINPROGRESS imediatamente; a conclusão é detectada aguardando o socket ficar writable (poll/epoll).

Assinatura

int connect(int sockfd, const struct sockaddr * addr, socklen_t addrlen);

Parâmetros

ParâmetroTipoDescrição
sockfdintDescritor do socket.
addrconst struct sockaddr *Endereço de destino.
addrlensocklen_tTamanho de `addr`.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1sockfdint
rsiargumento 2addrconst struct sockaddr *
rdxargumento 3addrlensocklen_t

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EACCES(13)
Permissão negada.
EADDRINUSE(98)
Endereço já em uso.
EALREADY(114)
Operação já em andamento.
ECONNREFUSED(111)
Conexão recusada pelo destino.
EINPROGRESS(115)
Operação em andamento (assíncrona, ex.: connect não bloqueante).
ETIMEDOUT(110)
Conexão expirou (timeout).
ENETUNREACH(101)
Rede inalcançável.

Relacionadas