Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

24

Transcript of Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Page 1: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.
Page 2: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java

Page 3: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Objetivos Networking:₋ Crear aplicaciones distribuidas₋ Comunicar o interoperar aplicaciones por redes

conocidas (LAN, Internet, etc.)

Page 4: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Es una combinación de sistemas que pueden colaborar entre si para dar a los usuarios toda la información que ellos necesiten sin que tengan que saber donde esta ubicada.

Es una arquitectura de procesamientos cooperativo donde uno de los componentes pide servicios a otro.

Page 5: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.
Page 6: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Se aprovecha la potencia de cómputo de las estaciones de trabajo

Se ubica el procesamiento cerca de las fuentes de trabajo reduciendo tráfico y tiempo de respuesta

Facilita la gestión de cambios de software

Alienta la aceptación de sistemas abiertos. Libera a los usuarios de las arquitecturas propietarias

Page 7: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

El servidor puede convertirse en cuello de botella

Costo elevado

Software y hardware específico

Page 8: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Modelo de sistemas y/o de aplicaciones, en el cual las funciones y los datos pueden estar distribuidos a través de múltiples recursos de cómputo, conectados en un ambiente de redes LAN o WAN.

Page 9: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Sockets₋ Punto de comunicación por el cual un proceso

puede enviar o recibir información₋ Canal de comunicación bidireccional

₋ Comunicación por TCP/IP₋ Requieren del conocimiento por parte del cliente

de la máquina y puerto donde está el servidor.₋ La comunicación cliente/servidor debe

implementar un protocolo tratado en tiempo de programación

Page 10: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

CORBA (Common Object Request Broker Architecture)

₋ Un producto de la O.M.G. (Object Management Group)

₋ Un entorno para la ejecución de P.O.O. Distribuido.

₋ Esta especificación debe ser implementada para los distintos lenguajes de programación

Page 11: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

RMI (Remote Method Invocation)

₋ Es un API standard para construir sistemas distribuidos en Java

₋ 100 % Java

₋ Permite que programas residentes en una computadora, realicen llamadas a metodos sobre objetos existentes en otras.

Page 12: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Web Services₋ Especificación para interoperar sistemas

informáticos₋ Estándar SOAP sobre HTTP₋ Adoptado por .NET, JAVA, etc.₋ Ideal para Internet

Page 13: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Direccionar la conexión:₋ La ubicación o nombre de la máquina remota₋ Número del Puerto para identificar el propósito

en el servidor

Números de Puertos:₋ Rango desde 0 a 65535

Page 14: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.
Page 15: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Servidor

Boolean stop= false;SockeServer ss= new SocketServer(PortNumber);while (!stop){

Socket s = ss.accept();DataInputStream input = new

DataInputStream(s.getInputStream());DataOutputStream output =output = new

DataOutputStream(s.getOutputStream());……

}

Page 16: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Cliente Socket s;

try { s = new Socket(ServerAddress,PortNumber); DataOutputStream output = new DataOutputStream( s.getOutputStream()); DataInputStream input = new DataInputStream(s.getInputStream()); ……… s.close();} catch (UnknownHostException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace();}

Page 17: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

import java.io.*;

import java.net.*;

class Cliente {

static final String HOST = "localhost";

static final int PUERTO=5000;

public Cliente( ) {

try{

Socket skCliente = new Socket( HOST , Puerto );

InputStream aux = skCliente.getInputStream();

DataInputStream flujo = new DataInputStream( aux );

System.out.println( flujo.readUTF() );

skCliente.close();

} catch( Exception e ) {

System.out.println( e.getMessage() );

}}

public static void main( String[] arg ) {

new Cliente();

}}

Page 18: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

En primer lugar se crea el socket denominado skCliente, al que se le especifican el nombre de host (HOST) y el número de puerto (PORT) en este ejemplo constantes.

Luego se asocia el flujo de datos de dicho socket (obtenido mediante getInputStream)), que es asociado a un flujo (flujo) DataInputStream de lectura secuencial.

Page 19: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

De dicho flujo capturamos una cadena ( readUTF() ), y la imprimimos por pantalla (System.out).

El socket se cierra, una vez finalizadas las operaciones, mediante el método close(). Debe observarse que se realiza una gestión de excepción para capturar los posibles fallos tanto de los flujos de datos como del socket.

Page 20: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

El programa servidor se instala en un puerto determinado, a la espera de conexiones, a las que tratará mediante un segundo socket.

Cada vez que se presenta un cliente, le saluda con una frase "Hola cliente N".

Este servidor sólo atenderá hasta tres clientes, y después finalizará su ejecución, pero es habitual utilizar bucles infinitos ( while(true) ) en los servidores, para que atiendan llamadas continuamente.

Page 21: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Utiliza un objeto de la clase ServerSocket (skServidor), que sirve para esperar las conexiones en un puerto determinado (PUERTO), y un objeto de la clase Socket (skCliente) que sirve para gestionar una conexión con cada cliente.

Mediante un bucle for y la variable numCli se restringe el número de clientes a tres, con lo que cada vez que en el puerto de este servidor aparezca un cliente, se atiende y se incrementa el contador.

Page 22: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Para atender a los clientes se utiliza laccept() de la clase ServerSocket, que es una rutina que crea un nuevo Socket (skCliente) para atender a un cliente que se ha conectado a ese servidor.

Se asocia al socket creado (skCliente) un flujo (flujo) de salida DataOutputStream de escritura secuencial, en el que se escribe el mensaje a enviar al cliente.

Page 23: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

Introducción Arquitectura Cliente-Servidor Evolución Networking RMI-CORBA Web Services Sockets en Java

Page 24: Introducción Arquitectura Cliente-Servidor Evolución Networking Socket en Java.

The Java Tutorialhttp://java.sun.com/docs/books

OMGhttp://www.omg.org

Examples from Java Network Programminghttp://www.ibiblio.org/java/books/jnp/javanetexamples/

index.html Java 109 : Networking with Javahttp://www.javacoffeebreak.com/java109/java109.html Ecuredhttp://www.ecured.cu/index.php/

Arquitectura_Cliente_Servidor