Académique Documents
Professionnel Documents
Culture Documents
UCEVA
Facultad de ingeniería
Ingeniería de sistemas
Sistemas Distribuidos
Ingeniera Vivian Orejuela Ruiz
Capas de Middleware
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Características de la comunicación de procesos
p q
Implica
Emisor Receptor
Comunicación
Sincronización
Secuencia de bytes
Envia Recibe
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Comunicación síncrona y asíncrona
Colas de mensajes
p q
Emisor Receptor
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Comunicación síncrona y asíncrona
Síncrona:
Tanto envía como recibe son operaciones bloquéantes
Asíncrona:
La utilización de la operación envía no es bloqueante
La operación recibe puede tener variantes bloqueante y
no bloqueante
p q
Emisor Receptor
Mensaje
Envia() Recibe()
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Destinos de los mensajes
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Sockets (conectores)
Socket
Se asocia a
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Sockets and ports
mensaje
client server
Otros puertos
Internet address = 138.37.94.248 Internet address = 138.37.88.249
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Comunicación de Datagramas UDP
Datos
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Comunicación de Datagramas UDP
Bloqueo
Operación de envió no bloquéante
Operación de recepción bloquéante
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Comunicación de Datagramas UDP
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Comunicación de Datagramas UDP
DatagramPacket
DatagramSocket
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
API java para UDP
Métodos
getData
getPort
Del emisor
getAddress
getLength
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
API java para UDP
Metodos:
close()
finalize()
getLocalPort()Retorna el número de puerto en el host local
al que está conectado el socket.
receive (DatagramPacket p)
send (DatagramPacket p)
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
CLIENTE UDP 1/3
import java.net.*;
import java.io.*;
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
…CLIENTE UDP 2/3
try {
aSocket = new DatagramSocket();
byte [] m = "hola".getBytes();
InetAddress aHost = InetAddress.getByName("localhost");
int serverPort = 6789;
DatagramPacket request = new DatagramPacket(m,
"hola".length(), aHost, serverPort);
aSocket.send(request);
byte[] buffer = new byte[m.length];
DatagramPacket reply = new DatagramPacket(buffer,
buffer.length);
aSocket.receive(reply);
System.out.println("Reply: " + new
String(reply.getData()));
}//try Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
…CLIENTE UDP 3/3
import java.net.*;
import java.io.*;
public class Userver {
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);
}//while
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
…UDP server 2/2
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
COMUNICACIÓN DE STREAMS TCP
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
COMUNICACIÓN DE STREAMS TCP
Hilos
Un servidor puede bloquearse esperando respuesta.
Modelo de Fallo (TCP)
Los procesos que utilizan la conexión no distinguen entre
un fallo de red y un fallo en el proceso que esta en el otro
extremo
Los procesos comunicantes no pueden saber si sus
mensajes recientes han sido recibidos.
Utilización
HTTP, FTP, TELNET, SMTP
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
API java para los streams TCP
ServerSocket
Socket
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
API java para los streams TCP
ServerSocket
Utilizada por un servidor para crear un socket en el
puerto del servidor que escucha las peticiones de los
clientes.
Métodos
public Socket accept ()
public void close ()
public InetAddress getInetAddress ()
public int getLocalPort (): Retorna el puerto en el que está
escuchando el socket.
public String toString( )
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
API java para los streams TCP
Socket
Esta clase es utilizada por el par de procesos de una
conexión
Métodos
public void close()
public InetAddress getInetAddress ()
public InputStream getInputStream ()
public int getLocalPort(): Retorna el puerto local al que
está conectado el socket.
public OutputStream getOutputStream ()
public int getPort ()Retorna el puerto remoto al que está
conectado el socket.
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
TCP client 1/2
import java.net.*;
import java.io.*;
public class TCPClient {
public static void main (String args[]) {
Socket s = null;
try{
int serverPort = 7896;
s = new Socket("localhost", serverPort);
DataInputStream in = new DataInputStream( s.getInputStream());
DataOutputStream out =
new DataOutputStream( s.getOutputStream());
out.writeUTF("hola");
String data = in.readUTF();
System.out.println("Received: "+ data) ;
}//try
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
TCP client 2/2
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
TCP server 1/3
import java.net.*;
import java.io.*;
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
TCP server 3/3
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000