Voltar à lista
Linux x86_64Rede & sockets#41

socket

Cria um novo endpoint de comunicação (socket) e retorna um descritor de arquivo para ele.

Descrição

Ponto de partida de toda comunicação em rede (e de vários mecanismos de IPC local, como AF_UNIX) no Linux: escolhe a família de endereços, o tipo de socket e o protocolo, e devolve um descritor que se comporta como qualquer outro arquivo para read/write/close, além de suportar as chamadas específicas de socket.

Header: sys/socket.hman 2

Assinatura

int socket(int domain, int type, int protocol);

Parâmetros

ParâmetroTipoDescrição
domainintFamília de endereços: AF_INET, AF_INET6, AF_UNIX, AF_NETLINK, etc.
typeintSOCK_STREAM, SOCK_DGRAM, SOCK_RAW, etc., opcionalmente combinado com SOCK_NONBLOCK/SOCK_CLOEXEC.
protocolintProtocolo específico dentro da família/tipo, ou 0 para o padrão (ex.: TCP para SOCK_STREAM+AF_INET).

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1domainint
rsiargumento 2typeint
rdxargumento 3protocolint

Valor de retorno

Um novo descritor de arquivo em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EACCES(13)
Permissão negada.
EAFNOSUPPORT(97)
Família de endereços não suportada pelo protocolo.
EMFILE(24)
Limite de arquivos abertos do processo atingido.
ENFILE(23)
Limite de arquivos abertos no sistema atingido.
ENOBUFS(105)
Sem espaço em buffer disponível.
EPROTONOSUPPORT(93)
Protocolo não suportado.

Relacionadas