You are on page 1of 8

Comunicao por Datagramas - UDP

Prof. Tarcisio Rocha tarcisio@dcomp.ufs.br




Universidade Federal de Sergipe
Departamento de Computao
UDP
Protocolo da camada de transporte
Transmisso de mensagens entre aplicaes
distribudas atravs do protocolo IP
quase uma rplica do protocolo IP
Basicamente ele acrescenta ao IP um cabealho bsico com:
nmero da porta do remetente
nmero da porta do destinatrio
um campo com o comprimento
uma soma de verificao


UDP
No oferece garantia de entrega
Transmite por mensagens individuais (datagramas) de at 64Kbytes
No acarreta custos de configurao
No h estabilecimento de conexo antes do envio
No exige mensagens de confirmao
Envia mensagens de forma mais rpida que o TCP


API para Protocolos Internet
A operands send e receive
Send operao de envio de uma mensagem a um destino
Receive operao de recepo de uma mensagem no
receptor
Analogia ao sistema de SEDEX se no tiver ningum esperando
para receber, a mensagem no entregue
A chamada da operao receive significa estou esperando o
recebimento de uma mensagem


INTERFACE SOCKET PARA UDP
Primitiva Significado
Socket Crie um novo terminal de comunuicao (socket)
Bind Anexe uma porta ao socket
Send Envie um pacote
Receive Receba um pacote
Close Feche o terminal de comunicao
SOCKET UDP EM JAVA:
DatagramSocket
Operaes Principais
DatagramSocket()
Construtor cria socket UDP associado a
qualquer porta livre
DatagramSocket(int port)
Construtor cria socket UDP associado
porta especificada
send(DatagramPacket p)
Envie pacote
receive(DatagramPacket p)
Receba pacote
close()
Fecha o socket
PACOTES UDP EM JAVA:
DatagramPacket
Principal Construtor
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
Principais Operaes
InetAddress getAddress()
Devolver endereo anexado ao pacote
byte[] getData() Devolver dados anexados ao pacote
int getLength() Devolver nmero de bytes dos dados
int getPort() Devolver porta
Exemplo de Sockets UDP: exemplo 1
DatagramSocket socket =
new DatagramSocket(1177);

byte[] buffer = new byte[1000];

DatagramPacket packet=
new DatagramPacket(buffer,
buffer.length);

socket.receive(packet);

System.out.println(
new String(packet.getData(),
0,
packet.getLength()));

socket.close();
DatagramSocket socket = new DatagramSocket();

String msg = "Ol!";
InetAddress addr =
InetAddress.getByName("DCOMP056");

DatagramPacket packet =
new DatagramPacket(msg.getBytes(),
msg.length(),
addr,
1177);

socket.send(packet);
Cliente

Servidor

You might also like