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();