Professional Documents
Culture Documents
Datagrama x Fluxo
• Datagrama
– modelo de sistema postal
• rota de cada pacote independe dos demais
• endereçamento individual
– exemplo : protocolo de rede IP
• Circuito Virtual
– modelo do sistema telefônico
• estabelecimento prévio de rota
• caminho dedicado para comunicação
• após o término : conexão é desfeita
– exemplo : protocolo de rede X.25
C : TCP
1. Comente a utilização da Comunicação Stream (Fluxo) no TCP.
2. Explique o modelo de falhas do TCP. O TCP suporta comunicação
confiável? Justifique.
3. Comente exemplos de utilização do TCP.
Uso do TCP
• Muitos serviços utilizados frequentemente
– executam sobre conexões TCP com portas reservadas
• Exemplos
– HTTP : protocolo de transferência de hipertexto
• usado para comunicação entre web browsers e web servers
– FTP : protocolo de transferência de arquivos
• permite navegar em diretórios remotos
• e transferir arquivos de um computador a outro
– Telnet : sessão de terminal para um computador remoto
– SMTP : protocolo simples de transferência de mail
Request
doOperation
message getRequest
select object
(wait) execute
Reply method
message sendReply
(continuation)
agreed port
socket any port socket
message
client server
other ports
Internet address = 138.37.94.248 Internet address = 138.37.88.249
Socket
• Criação
– socket : cria socket
– close : destrói socket
• Cliente
– connect : conecta com servidor
• Servidor
– bind : atribui endereço a socket
– list : espera pedidos de conexão
– accept : estabelece conexão e cria novo socket
• E/S orientada a Fluxo
– read : le stream de bytes
– write : escreve stream de bytes
• E/S orientada a Mensagem (Datagrama)
– send : envia mensagem
– receive : recebe mensagem
bind(s, ServerAddress);
listen(s,5);
connect(s, ServerAddress)
sNew = accept(s, ClientAddress);
write(s, "message", length) n = read(sNew, buffer, amount)
• DatagramPacket
– mensagem de envio e de recepção
– construtor para envio
• array de bytes da mensagem, tamanho da mensagem,
endereço Internet do destino, número da porta do destino
– construtor para recepção
• array de bytes para receber a mensagem, tamanho do buffer
de array de bytes
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();}
}
}
Servidor TCP
import java.net.*;
import java.io.*;
public class TCPServer {
public static void main (String args[]) {
try{
int serverPort = 7896;
ServerSocket listenSocket = new ServerSocket(serverPort);
while(true) {
Socket clientSocket = listenSocket.accept();
Connection c = new Connection(clientSocket);
}
} catch(IOException e) {System.out.println("Listen :"+e.getMessage());}
}
}
Reflexão em Java
Classe do objeto
Obter classe através de seu objeto
• Class classe = objeto.getClass ();