Professional Documents
Culture Documents
Departamento de Computao
Universidade Federal de Sergipe
Introduo
Cama da de Transporte
Prov mecanismos que possibilitam a troca de dados fim-afim, ou seja, a camada de transporte no se comunica com
mquinas intermedirias na rede
Introduo
Camada de Transporte
Outros protocolos
Datagrama UDP
No confivel
No h garantia de entrega
Servio sem conexo
Datagrama UDP
Timeouts
Retransmisses
Acknowlegments
Controle de fluxo
No h garantia de entrega
Problemas relacionado
Comunicao com Datagramas
Tamanho da mensagem
Problemas relacionado
Comunicao com Datagramas
Bloqueio
Problemas relacionado
Comunicao com Datagramas
Bloqueio
Problemas relacionado
Comunicao com Datagramas
Timeouts
Problemas relacionado
Comunicao com Datagramas
Recepo Annima
Modelo de Falhas
Integridade
Validade
Modelo de Falhas
Confirmaes de recebimento
Emprego de UDP
Latncia do remetente
DatagramPacket
DatagramPacket
Principal Construtor
DatagramPacket(byte[]buf, intlength, InetAddressaddress,
intport)
Principais Operaes
InetAddress getAddress() Devolver endereo anexado ao pacote
byte[] getData()
int getLength()
int getPort()
Devolver porta
DatagramSocket
DatagramSocket
Operaes Principais
DatagramSocket()
DatagramSocket(int port)
send(DatagramPacketp)
Envie pacote
receive(DatagramPacketp)
Receba pacote
close()
Fecha o socket
Cliente UDP
import java.net.*;
import java.io.*;
public class UDPClient{
public static void main(String args[]){
// args give message contents and server hostname
DatagramSocket aSocket = null;
try {
aSocket = new DatagramSocket();
byte [] m = args[0].getBytes();
InetAddress aHost = InetAddress.getByName(args[1]);
int serverPort = 6789;
DatagramPacket request = new DatagramPacket(m, m.length(), aHost, serverPort);
aSocket.send(request);
byte[] buffer = new byte[1000];
DatagramPacket reply = new DatagramPacket(buffer, buffer.length);
aSocket.receive(reply);
System.out.println("Reply: " + new String(reply.getData()));
}catch (SocketException e){System.out.println("Socket: " + e.getMessage());
}catch (IOException e){System.out.println("IO: " + e.getMessage());}
}finally {if(aSocket != null) aSocket.close();}
}
}
Servidor UDP
import java.net.*;
import java.io.*;
public class UDPServer{
public static void main(String args[]){
DatagramSocket aSocket = null;
try{
aSocket = new DatagramSocket(6789);
byte[] buffer = new byte[1000];
while(true){
DatagramPacket request = new DatagramPacket(buffer, buffer.length);
aSocket.receive(request);
DatagramPacket reply = new DatagramPacket(request.getData(),
request.getLength(), request.getAddress(), request.getPort());
aSocket.send(reply);
}
}catch (SocketException e){System.out.println("Socket: " + e.getMessage());
}catch (IOException e) {System.out.println("IO: " + e.getMessage());}
}finally {if(aSocket != null) aSocket.close();}
}
}
Referncias
Captulo 4
Sistemas Distribudos
Departamento de Computao
Universidade Federal de Sergipe