Provided by: manpages-pt_20040726-5_all 

NOME
udp - Protocolo UDP do IPv4.
SINÓPSE
#include <sys/socket.h>
#include <netinet/in.h>
udp_socket = socket(PF_INET, SOCK_DGRAM, 0);
DESCRIÇÃO
Esta é uma implementação do User Datagram Protocol descrito na RFC768. Ele implementa um serviço de
datagramas sem checagem dos pacotes e não orientado a conexão. Os pacotes podem ser reordenados ou
duplicados antes de chegar ao destino. O UDP gera e checa a validade (checksum) dos pacotes para pegar
possíveis erros de transmissão.
Quando um soquete UDP é criado, os endereços local e remoto são indefinidos. Os datagramas podem ser
usados imediatamente através do comando: sendto(2) ou sendmsg(2) com um endereço de destino válido como
argumento. Quando o comando connect(2) é usado no soquete, o endereço de destino padrão é definido e o
datagrama pode ser enviado usando-se o comando: send(2) ou write(2) sem a necessidade de especificação do
endereço de destino. Pode-se também enviar para outros destinos passando um endereço para o comando
sendto(2) ou sendmsg(2). Para poder receber os pacotes um endereço local deve ser definido para o
soquete usando-se o comando: bind(2), quando este não é o caso, a camada do soquete automáticamente
atribuirá uma porta local ao primeiro requisito do usuário.
Todas as operações de recepção retornam apenas um pacote. Quando o pacote é menor do que o buffer
informado, apenas a quantidade referente aos dados é retornada. Quando o pacote é maior o mesmo é
truncado e o indicador MSG_TRUNC é ativado.
Opções IP podem ser enviadas ou recebidas usando as opções do soquete descritas no ip(7). Elas só são
processadas pelo Linux quando a sysctl apropriada está habilitada (mas ainda é passada para o usuário
mesmo quando desativada). veja no ip(7).
Quando o indicador MSG_DONTROUTE está ativo, o envio do endereço de destino deve referir-se ao endereço
da interface local e o pacote só é enviado para esta interface.
O UDP fragmenta um pacote quando seu tamanho total excede a MTU (Maximum Transmission Unit) da interface.
Uma alternativa mais amigável é usar a deteção da MTU como descrita na seção IP_PMTU_DISCOVER do ip(7).
FORMATO DO ENDEREÇO
O UDP usa o formato de endereço sockaddr_in do IPv4 descrito no ip(7).
TRATAMENTO DE ERROS
Todos os erros fatais serão passados para o usuário como um erro retornado mesmo quando o soquete não
está conectado. Esta característica difere de outras implementações de soquete BSD que não passam
quaisquer erros a menos que o soquete esteja conectado. Esta característica no Linux está de acordo com a
RFC1122.
Para compatibilidade é possível definir a opção SOL_SOCKET SO_BSDCOMPAT para só receber erros remotos
quando o soquete estiver conectado (exceto para EPROTO e EMSGSIZE). É melhor corrigir o código para
manipular os erros adequadamente do que habilitar esta opção. Os erros gerados localmente sempre serão
passados.
Quando a opção IP_RECVERR está habilitada todos os erros são armazenados na fila de erros do soquete e
podem ser recebidos pelo recvmsg(2) com o indicador MSG_ERRQUEUE ativado.
ERROS
Todos os erros documentados pelo socket(7) ou ip(7) podem ser retornado por um send ou receive em um
soquete UDP.
ECONNREFUSED Nenhum receptor foi associado ao endereço de destino. Isto pode ter sido causado por um
pacote enviado anteriormente no soquete.
VERSÕES
IP_RECVERR é uma nova característica do Linux 2.2
CRÉDITOS
Esta página de manual foi escrita por Andi Kleen.
VEJA TAMBÉM
ip(7), socket(7), raw(7).
RFC768 - O protocolo UDP.
RFC1122 - Requesitos da máquina.
RFC1191 - Descrição da deteção do MTU.
TRADUZIDO POR LDP-BR em 21/08/2000.
[u00E1]bio Henrique F. Silva <fabiohfs@mail.com> (Tradução) André L. Fassone Canova
<lonelywolf@blv.com.br> (revisão)
Página de Manual Linux 02/10/1998 UDP(7)