Introduo:
Comunicao e identificao de aplicaes:
porta
20348
porta
20345
porta
10340
porta
15398
TCP
porta
6970
UDP
ssh.cin.ufpe.br
150.161.2.106
procololo = 6
porta = 22
protocolo = 6
protocolo = 17
Internet
host-0-13.re.apartnet.br.inter.net
200.199.75.13
servidor DNS
www.bbc.co.uk
200.185.56.49
212.58.224.61
protocol = 17
protocolo = 17
porta = 53
porta = 44585
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
www.uol.com.br
200.221.8.18
procololo = 6
porta = 80
INTRODUO
Programao de aplicaes:
Sockets
Estilo: envia/recebe (send/receive)
Caracterstica: eficiente
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
INTRODUO: SOCKET
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
INTRODUO: SOCKET
any port
socket
agreed port
socket
message
client
server
other ports
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
INTRODUO: SOCKET
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
TIPOS DE SOCKET
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
socket
connect
write
read
close
bind
listen
Cliente
socket ()
connect ()
write ()
read ()
write ()
close ()
read ()
close ()
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
Cliente
socket ()
bloqueado
sendto ()
sendto ()
close ()
recvfrom ()
close ()
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
NUMEROS DE PORTAS
1-255
256-1023
1-1023
1024-4999
5000-
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
Servidor Iterativo
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
incio
Aguarda pedido
pedido
Trata pedido
resposta
Responde
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
import java.io.*;
CONCORRENCIA
import
java.net.*;
public class SimpleJavaServer {
public static void main(String[] args) {
try {
ServerSocket s = new ServerSocket(9999);
String str;
System.out.println("Server is listening ....");
while (true) {
Socket c = s.accept();
InputStream i = c.getInputStream();
OutputStream o = c.getOutputStream();
do {
byte[] line = new byte[100];
i.read(line);
System.out.println("digite uma palavra para o
cliente...");
o.write(line);
str = new String(line);
} while ( !str.trim().equals("bye") );
c.close();
}
}
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design
Addison-Wesley Publishers 2000
catch (Exception err){
System.err.println(err);
Edn. 3
Servidor Concorrente
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
incio
pedido
Aguarda pedido
THREAD
Trata pedido
Trata pedido
responde
resposta
Fim da Thread
responde
resposta
Fim da Thread
........
Trata pedido
........
responde
resposta
Fim da Thread
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleJavaServer {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
ServerSocket s = new ServerSocket(9999);
String str;
System.out.println("Server is listening ....");
while (true) {
Socket c = s.accept();
MinhaThread thread = new MinhaThread(c);
thread.start();
}
} catch (Exception err){
System.err.println(err);
}
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
}}
Addison-Wesley Publishers 2000
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class MinhaThread extends Thread {
private Socket socket;
private InputStream i;
private OutputStream o;
//private String str;
public MinhaThread(Socket s){
socket = s;
}
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
import java.net.*;
CONCORRENCIA
import
java.io.*;
public class SimpleJavaClient {
public static void main(String[] args) {
try {
Socket s = new Socket("127.0.0.1", 9999);
InputStream i = s.getInputStream();
OutputStream o = s.getOutputStream();
String str;
byte[] line = new byte[100];
System.out.println("digite uma palavra ou bye para
sair");
System.in.read(line);
o.write(line);
i.read(line);
str = new String(line);
System.out.println(str.trim());
s.close();
}
catch (Exception err) {
System.err.println(err);
}
}
}
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
InetAddress ia = null;
try {
ia = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
System.out.println("IP: " + ia.getHostAddress());
System.out.println("Nome: " + ia.getHostName());
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
try {
ServerSocket serverSocket = new ServerSocket(portNumber);
Socket clientSocket = serverSocket.accept();
InetAddress address = clientSocket.getInetAddress();
} catch (Exception e) {
e.printStackTrace();
}
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
SOCKET : ATIVIDADE
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
SOCKET : ATIVIDADE
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
RMI
(Remote Method
Invocation)
CONCEITOS:
Applications, services
RMI and RPC
This
chapter
request-reply protocol
marshalling and external data representation
UDP and TCP
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
Middleware
layers
CONCEITOS:
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
CONCEITOS:
Um objeto distribudo um componente que pode
interoperar com outros componentes, atravs da rede de
comunicao
Os objetos distribudos possuem as mesmas
caractersticas principais dos objetos das linguagens de
programao O O:
Encapsulamento,
Polimorfismo e
Herana;
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
CONCEITOS:
Referncia de objetos: Usado para fazer referncia para qualquer
chamada a um mtodo
Interfaces: Define os mtodos, tipos dos argumentos, tipos de
retornos e excees, sem especificar sua implementao
Uma interface s pode conter mtodos pblicos e abstratos (os prefixos
abstract e public so em geral omitidos).
Uma interface pode conter variveis, mas elas devem ser estticas
(static) e finais (final).
Uma interface implementada com a palavra chave implements.
Uma interface no pode ser instanciada (no pode criar objetos com new )
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
CONCEITOS:
Interface vs. Implementao: Objeto remoto e interface remoto
remote object
Data
remote
interface
m1
m2
m3
implementation
of methods
m4
m5
m6
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
ARQUITETURA
obj.met( )
stub
skeleton
TCP/IP
ARQUITETURA
Stub:
um protocolo do lado do cliente
identifica o objeto e os mtodos invocados
Skeleton
protocolo do lado do servidor
Invoca o mtodo do objeto apropriado
A questo dos sistemas distribudos :
Como o servidor se faz conhecer (publicao)
Como o cliente acha um servidor (descoberta)
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
COMO FUNCIONA
1.
Servidor de registro
2.
3.
stub
5.
servidor
cliente
7
5
4.
6.
skeleton
8
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
COMO FUNCIONA
7.
Servidor de registro
servidor
cliente
9
stub
skeleton
8
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
OBJETO
Descrio de Objetos:
Objeto implementa uma interface
Objeto remoto implementa a interface remote (java.rmi)
Objeto passado por referncia implementa Serializable (java.io)
A representao dos objetos transparente e automtica graa
ao mtodo de serializao (transformao do objeto em
fluxo de bytes
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
USANDO RMI
USANDO RMI
Exemplo Prtico
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
java.rmi.Naming;
java.rmi.registry.LocateRegistry;
class ServerObjetos {
static void main(String[] args){
System.out.print("Servidor ativo...");
new ServerObjetos();
}
public ServerObjetos(){
try {
Mensageiro objeto1 = new MensageiroImpl();
//registra o servidor pela porta 9999, evitando de
//faze-lo no console usando RMIC
LocateRegistry.createRegistry(9999);
Naming.rebind("rmi://localhost:9999/MensageiroService"
, objeto1);
}catch( Exception e ) { System.out.println(" Erro: " +
e );}
}}
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
RMI : ATIVIDADE
Instructors Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
Addison-Wesley Publishers 2000
REFERENCIAS BIBLIOGRAFICAS
COULOURIS, G et al; Sistemas Distribudos Conceitos e Projetos, 4. Edio,
Bookman, 2007
TANENBAUM, Andrew S, STEEN, Martenvan; Sistemas distribudos: princpios e
paradigmas, Pearson Prentice Hall, 2007
COULOURIS, DOLLIMORE and KINDBERG; Distributed Systems: Concepts and
Design, Edition 3, Addison-Wesley 2001
KARAM, D. J. Modelo de negocio para mobilidade e interatividade em ambientes
convergentes heterogneos. 2006, 80p tese (Doutorado) - Escola Politcnica,
Universidade de So Paulo, So Paulo, 2006.
ITU 2004 International Telecommunication Union Year 2001, General Overview of
NGN, 2004