Linux x86_64Rede & sockets#49
bind
Associa um socket a um endereço local (porta, endereço IP, ou caminho de socket Unix).
Descrição
Passo necessário antes de `listen` (servidores TCP) e opcional antes de `sendto`/`connect` para fixar a porta/endereço de origem.
Header:
sys/socket.hman 2Assinatura
int bind(int sockfd, const struct sockaddr * addr, socklen_t addrlen);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| sockfd | int | Descritor do socket. |
| addr | const struct sockaddr * | Endereço local a associar. |
| addrlen | socklen_t | Tamanho de `addr`. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | sockfdint |
| rsi | argumento 2 | addrconst struct sockaddr * |
| rdx | argumento 3 | addrlensocklen_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.
- EADDRNOTAVAIL(99)
- Endereço solicitado indisponível localmente.
- EINVAL(22)
- Argumento inválido.
- ENOTSOCK(88)
- Operação de socket em descritor que não é um socket.