Cliente/Servidor ● Normalmente queremos algo más que conectarnos a un servidor ● El servidor nos va a dar un servicio ● Protocolo – Orden y tipo de datos.

Slides:



Advertisements
Presentaciones similares
Curso de Java Java – Redes Rogelio Ferreira Escutia.
Advertisements

Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
PROTOCOLOS AUTOR: FERNANDO LIMA. PROTOCOLOS DE RED.
Programación Interactiva Aplicaciones Cliente-Servidor
“GUI para Conexiones y Transferencia de Datos Seguros”
Sockets y Threads en JAVA
Sistemas Informáticos Distribuidos
ENTRADA/SALIDA ENTRADA/SALIDA DESDE O HACIA UN PROCESO
SOCKETS INTRODUCCIÓN DEFINICIÓN TIPOS DE SOCKETS USO DE SOCKETS.
Introducción a Programación Concurrente
Ingeniería en Automática Industrial Software para Aplicaciones Industriales I Ingeniería en Automática Industrial Software para Aplicaciones Industriales.
Servidor de Batalla Naval.
Qué pasa cuando varios clientes tratan de conectarse al mismo teimpo a un servidor Una forma es ir atendiéndolos de a uno en un ciclo: como en el programa.
El Socket Un socket es un extremo de un link de comunicación entre dos programas que corren en una red. El socket esta asociado (amarrado, bound) a ub.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Christophe Fontano Julien Alagnou Socket.
Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.
Sistemas Operativos Distribuidos Prácticas Justo N. Hidalgo Sanz Universidad Antonio de Nebrija 2002/03.
1 Streams en Java Agustín J. González ELO Generalidades Un Stream es simplemente una fuente o destino de bytes. Los streams más comunes son los.
Sockets en Java. Sockets ● Para programar aplicaciones en red en Java se utilizan los Sockets. ● Un socket permite establecer y manejar una conexión entre.
Arquitectura - 3er Parcial. Asignaturas para Arquitectura – 3er Parcial.  Diseño del modelo de red (clase networking).  Implementacion del modelo de.
MRMUC Instructor Notes
Ing. Karen Torrealba de Oblitas
1 Chat de salón 1.Enunciado del problema 2.Modelo cliente/servidor 3.Protocolo de comunicación con el servidor. 4.Chat privado 5.Diseño del cliente 6.Diseño.
Programación Orientada a Objetos
Entrada / Salida. Java adopta de Unix el concepto de stream Un stream es un flujo de datos (secuencia de bytes) que va de una fuente a un destino. Desde.
Streams. / En casi todo programa se necesita traer o enviar información a una fuente externa. / Dicha información puede estar en un archivo en el disco.
Ejemplo UDP en Java NOTAS import java.net.*; import java.io.*;
Aplicaciones Cliente/Servidor con Java. Acceso a la red TCP UDP HTTP, Telnet, FTP, SMTP, SNMP, etc (Aplicaciones usuario) IP TCP/IP ● TCP: Transmission.
Sockets. / Los sockets (zócalos, referido a los enchufes de conexión de cables) son mecanismos de comunicación entre programas a través de una red TCP/IP.
TCP/IP Introducción TCP/IP Introducción. TCP/IP vs OSI Aplicación Presentación Sesión Transporte Red Enlace Física Aplicación Acceso a la red Física TCP/IP.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
2: Capa Aplicación 1 Capítulo 2: Capa Aplicación  2.1 Principios de la aplicaciones de red  2.2 Web y HTTP  2.3 FTP  2.4 Correo Electrónico  SMTP,
1 Capítulo 21: Interacción Cliente Servidor ICD 327: Redes de Computadores Agustín J. González.
ELO3091 Interfaz de Socket Agustín J. González ELO309.
TEMA 3. Programación en red
User Datagram Protocol UDP Juan Pablo Araneda Danilo Araya Z.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Servicios en Red UT5. Servicios FTP.
Capa Transporte3-1 Capítulo 3: Capa transporte ELO322: Redes de Computadores Agustín J. González Este material está basado en el material preparado como.
Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Capa Transporte1 Capítulo 3: Capa Transporte - I ELO322: Redes de Computadores Agustín J. González Este material está basado en:  Material de apoyo al.
2: Capa Aplicación 1 Capítulo 2: Capa Aplicación - IV ELO322: Redes de Computadores Agustín J. González Este material está basado en:  Material de apoyo.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
TRANSFER FILE BY IP Claudia Codriansky Miguel Olave
2: Capa Aplicación 1 Capa Aplicación: Programación de sockets ELO322: Redes de Computadores Agustín J. González Este material está basado en:  Material.
Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Andres Marín L. Programación sockets en java.
LABORATORIO DE ESTRUCTURA DE COMPUTADORES II Desarrollo de aplicación Cliente-Servidor.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Christian Zurita Ávila.  En el momento que nuestro ordenador se conecta a internet, éste pasa a ser un elemento más dentro de la Red, es decir, forma.
INTEGRANTES : Selvin Rivas José Vásquez Francisco Pérez J’ Alberto Patal.
INGENIERIA EN SISTEMAS COMPUTACIONALES ASIGNATURA: PROGRAMACION ORIENTADA A OBJETOS ALUMNO: JAVIER MARTINEZ MARTINEZ.
Nivel de Transporte en Internet
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Modelo OSI Para redes………
2: Capa Aplicación 1 Capa Aplicación: Programación de sockets ELO322: Redes de Computadores Agustín J. González Este material está basado en:  Material.
Capa Transporte 1 Capítulo 3: Capa Transporte - I ELO322: Redes de Computadores Agustín J. González Este material está basado en:  Material de apoyo al.
En informática, es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol)
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
1 Introducción a las Comunicaciones en Red. import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static.
Capa Aplicación: Programación de sockets
Comunicación Servidor-Cliente sin conexión
DOCENTE: EMILIO ISMAEL BUSTAMANTE MONTES
Capa Aplicación: Programación de sockets
public class T extends Thread { private Socket s; public T(Socket x){s=x;} public void run(){try{ //escuchar al cliente BR in=new BR(new ISR(s.getInputStream()));
Transcripción de la presentación:

Cliente/Servidor ● Normalmente queremos algo más que conectarnos a un servidor ● El servidor nos va a dar un servicio ● Protocolo – Orden y tipo de datos

Esquema Servidor ● Abre un socket para esperar por conexiones ● Al llegar una conexión crea otro socket para comunicarse con el cliente ● Asocia uno o más flujos al socket de comunicación ● Lee/escribe a los flujos de acuerdo al protocolo establecido ● Termina la comunicación ● Cierra los flujos y cierra los sockets

Esquema Cliente ● Abre un socket para conectarse y comunicarse con el servidor ● Establece conexión con el servidor ● Asocia uno o más flujos al socket de comunicación ● Lee/escribe al flujo de acuerdo al protocolo establecido ● Termina la comunicación ● Cierra los flujos y cierra los sockets

Ejemplo Cliente/Servidor ● En el siguiente ejemplo el cliente se conecta al servidor y le comienza a mandar una serie de strings, y el servidor le responde con la longitud de cada string (como un entero!) ● Ambos programas terminan cuando el cliente le envía al servidor un string nulo ● El cliente debe de teclear la dirección o nombre del servidor en la línea de comandos

ServerSocket yo = null; Socket cliente = null; BufferedReader entrada; DataOutputStream salida; String llego; yo = new ServerSocket(5000); cliente = yo.accept();

entrada = new BufferedReader (new InputStreamReader (cliente.getInputStream())); salida = new DataOutputStream (cliente.getOutputStream());

do{ llego = entrada.readLine(); System.out.println("Llego: " + llego); salida.writeInt(llego.length()); }while(llego.length()!=0); entrada.close(); cliente.close(); yo.close();

Socket yo = null; PrintWriter alServidor; BufferedReader delTeclado; DataInputStream delServidor; String tecleado; yo = new Socket(comandos[0],5000); delTeclado = new BufferedReader (new InputStreamReader(System.in)); alServidor = new PrintWriter (yo.getOutputStream(),true); delServidor = new DataInputStream (yo.getInputStream());

do{ System.out.print ("Teclea un string: "); tecleado = delTeclado.readLine(); alServidor.println(tecleado); System.out.println("Longitud = "+delServidor.readInt()); }while(tecleado.length()!=0);

Aplicaciones Clientes/Servidor ● Aunque a veces es suficiente tener un servidor para que atienda a UN cliente, normalmente no es el caso ● Necesitamos que el servidor pueda atender a múltiples clientes en forma simultánea ● Para eso basta arrancar un hilo para atender a cada cliente ● En el hilo principal el servidor siempre estará escuchando por peticiones de conexión

Crear ServerSocket Petición de Conexión? Atender conexión Con el socket creado SI

Atención de la conexión en un HILO Atender conexión Con el socket creado

ServerSocket yo = null; Socket cliente = null; yo = new ServerSocket(5000); while(true){ cliente = yo.accept(); System.out.println(" new Atiende(cliente).start(); }

class Atiende extends Thread{ public Atiende(Socket cliente){ this.cliente = cliente; nombreyDirIP = this.cliente. getInetAddress().toString(); }

public void run(){ entrada = new BufferedReader (new InputStreamReader (cliente.getInputStream())); salida = new DataOutputStream (cliente.getOutputStream());

do{ llego = entrada.readLine(); System.out.println (“Llego:"+llego); salida.writeInt(llego.length()); }while(llego.length()!=0); System.out.println ("Ya se desconecto"+ "("+nombreyDirIP+")"); }

Datagramas ● Un socket de tipo datagrama es un punto de enlace orientado a no conexión ● El enlace no es confiable. No existe seguridad de que los paquetes llegarán ni en que orden lo harán ● Cada paquete enviado o recibido es direccionado y ruteado en forma individual ● Los paquetes enviados por una misma máquina puede seguir rutas diferentes

La clase DatagramSocket

Métodos de DatagramSocket ● Además de close(), getLocalPort() y getLocalAddress(), que funcionan igual que los métodos en la clase Socket, existen: ● void receive(DatagramPacket p) ● void send(DatagramPacket p)

DatagramPacket byte[]

DatagramSocket yo = null; DatagramPacket paquete; InetAddress dirCliente = null; int puertoCliente; byte[] buffer = new byte[80]; String aMandar, recibido; yo = new DatagramSocket(5000); System.out.println ("Socket escuchando en puerto 5000");

while(true){ buffer = new byte[80]; paquete = new DatagramPacket (buffer, buffer.length); yo.receive(paquete); recibido = new String (paquete.getData()); dirCliente = paquete.getAddress();

aMandar = new String (recibido.toUpperCase()); buffer = new byte[80]; buffer = aMandar.getBytes(); puertoCliente = paquete.getPort(); paquete = new DatagramPacket (buffer,buffer.length, dirCliente, puertoCliente); yo.send(paquete); }

DatagramSocket yo = null; InetAddress dir = null; DatagramPacket paquete; byte[] buffer = new byte[80]; String recibido, tecleado=" "; BufferedReader delTeclado = new BufferedReader (new InputStreamReader (System.in)); dir = InetAddress.getByName (args[0]);

yo = new DatagramSocket(); while(tecleado.length()!=0){ System.out.print("...."); tecleado = delTeclado. readLine(); buffer = tecleado.getBytes(); paquete = new DatagramPacket (buffer, buffer.length, dir, 5000); yo.send(paquete);

buffer = new byte[80]; paquete = new DatagramPacket (buffer, buffer.length); yo.receive(paquete); recibido = new String (paquete.getData()); System.out.println (">> "+recibido); } yo.close();

Transferencia de objetos ● Los flujos (streams y readers/writers) nos permiten mandar objetos por medio de la red sin problemas ● Capacidad de mandar estructuras de datos complejas ● Capacidad de mandar un objeto para procesamiento en una máquina más potente ● ServidorM3.java y Cliente3.java