Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.

Slides:



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

1 Curso Básico de C.I.O. Light Sección 12 Internet Sección 12 - Internet.
Conceptos básicos de Internet
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
Programación Interactiva Aplicaciones Cliente-Servidor
“GUI para Conexiones y Transferencia de Datos Seguros”
Aplicación informática. formando parte de una red. pone sus recursos a disposición de las demás computadoras(clientes) de la red. Maneja información.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Sockets y Threads en JAVA
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.
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.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Christophe Fontano Julien Alagnou Socket.
Direccionamiento IP Clases de direcciones. 01 de octubre de 2004Cesar Guisado2 TCP/IP La familia de protocolos TCP/IP fue diseñada para permitir la interconexión.
ELEMENTOS DE UNA RED ( Parte I)
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.
Capítulo 1 “Elementos de Programación”
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.
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.
Ejemplo UDP en Java NOTAS import java.net.*; import java.io.*;
1 Nivel aplicación Interacción Cliente Servidor Agustín J. González ELO309.
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.
COMP 250.  Ejemplo:  Suponer que se necesita codificar un programa donde se muestre como resultado el string “Bienvenidos al mundo de JAVA!!!” cien.
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.
RESUMEN CAPITULO 6.
Programando Clientes TCP Postítulo La Clase InetAddress Una dirección IP es la dirección absoluta de un computador cualquiera en toda la internet.
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.
Aplicaciones Peer-to-peer Cc50h Carácterísticas No hay servidor central Cada aplicación se comporta como cliente y servidor de las demás Son exceltentes.
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.
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: 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 – Av. Tupper 2007, Santiago - Fono: Fax: Módulo 8: Desarrollo de Aplicaciones.
Comunicación Servidor-Cliente sin conexión
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Cálculo de Operaciones Básicas Theo Soto G. Stefan Zepeda R. 30 de Noviembre del 2007.
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 – Av. Tupper 2007, Santiago - Fono: Fax: Módulo 8: Desarrollo de Aplicaciones.
Temario Introducción Clientes TCP Servidores Iterativos TCP Servidores Concurrentes UDP Multicasting Sincronización de procesos distr. Objetos remotos.
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 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.
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.
INTEGRANTES : Selvin Rivas José Vásquez Francisco Pérez J’ Alberto Patal.
Introducción Nivel 4. Modelo OSI Propiedades Nivel 4 Entrega de mensajes garantizada. Entrega de mensajes en el mismo orden en el que fueron enviados.
Funcionamiento del servicio DHCP. Tipos de mensajes 07/10/20121Jesús Torres Cejudo.
Introducción al lenguaje PROCESSING para ARDUINO
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
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.
Protocolos de Transporte y Aplicación
Planificación Curso UNIDAD 1. INTRODUCCIÓN A LOS SERVICIOS EN RED UNIDAD 2. SERVICIOS DHCP UNIDAD 3. SERVICIOS DNS UNIDAD 4. SERVICIOS DE ACCESO REMOTO.
Arquitectura de Computadores Clases Interrupciones de software y hardware IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica.
Protocolos de Transporte y Aplicación Javier Rodríguez Granados.
1 Introducción a las Comunicaciones en Red. import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static.
Comunicación Servidor-Cliente sin conexión
DOCENTE: EMILIO ISMAEL BUSTAMANTE MONTES
Transcripción de la presentación:

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 1 Repasemos: El servidor que lee import java.io.*; import java.net.*; public class UnServidor{ public static void main(String args[])throws Exception { ServerSocket ss = new ServerSocket(4444); Socket cs = ss.accept(); BufferedReader entradaSocket = new BufferedReader( new InputStreamReader(cs.getInputStream())); String linea = null; while (true) { linea=entradaSocket.readLine(); if (linea.equals("bye")) break; else System.out.println("llego :"+linea); } System.out.println("termina la llamada"); cs.close(); entradaSocket.close(); }

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 2 Repasemos: El cliente que escribe import java.io.*; import java.net.*; public class UnCliente{ public static void main(String args[])throws Exception { Socket s = new Socket(args[0],4444); PrintWriter salidaSocket = new PrintWriter(s.getOutputStream(),true); BufferedReader kbdin = new BufferedReader( new InputStreamReader(System.in)); String linea = null; while (true) { linea=kbdin.readLine(); if (linea.equals("bye")) break; else salidaSocket.println(linea); } System.out.println("termina la llamada"); s.close(); salidaSocket.close(); }

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 3 Cuando un programa debe comportarse como cliente y servidor a la vez: el teléfono  Un teléfono es un cliente y un servidor a la vez  Se comporta como servidor cuando recibe una llamada  Se comporta como cliente cuando efectúa una llamada  El servidor crea un socket asociado a un por desde donde escucha si hay alguien que quiere llamar.  El cliente queda esperando que el usuario de un comando para llamar a algun servidor (por ejemplo esperar del teclado que el usuario ingrese un nombre de host para llamar)  El problema es que deben estar los 2 en el mismo programa: usamos threads, uno para el servidor y otro para el cliente.  Ambos quedan esperando y se da curso a lo que pase primero.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 4 Cuando un programa debe comportarse como cliente y servidor a la vez: el teléfono (2)  Otro problema: no se deben aceptar peticiones de llamadas si es que se da curso a una llamada (se activa el thread del cleinte)  No se puede dar curso a una llamada si se atendó a una (se activa el thread de servidor)  La idea es suspender un thread cuando se activa el otro.  Para esto se necesita que ambos conozcan el otro thread. Al crear uno se le da un puntero al otro !  Ver programas telefono.java Oidor.java Llamados.java  El cliente sólo puede escribir, el servidor sólo puede leer, Modifíquelos !

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 5 Broadcasting  Muchas veces se necesita que un servidor distribuya un mismo mensaje entre varios clientes  Ej: en un chat entre varias personas, si uno escribe, los demás deben recibir lo que escribió.  Esto generalmente se resuelve con un servidor de comunicaciones.  Todos los clientes se registran con un servidor de comunicaciones.  Si uno de los cliente escribe algo, se lo manda al servidor  El servidor replica el mensaje a cada uno de los clientes que tiene registrado.  Hay que solucionar algunos problemas  Problema: El servidor de comunicaciones debe registrar a todos los clientes; Solución: llevamos un arreglo de sockets o flujos de salida para sockets.  Problema: El servidor debería oir si alguien quiere conectarse para participar en el chat o si quiere mandar un mensaje; Solución: implementemos un protocolo (por ejemplo si me conecto en un port o en otro.  Problema: El servidor no debe dejar de oir si alguien quiere conectarse cuando está mandando el mensaje; Solución: implementemos threads.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 6 Broadcasting: implementación  Veamos una primera solución: En el servidor usamos un thread para oir y registrar a los clientes. El programa principal (que es otro thread) queda en un ciclo infinito leyendo lineas del teclado y ditribuyéndolas a los clientes conectados. El cleinte simplemente se conecta y lee en un ciclo infinito lo que el servidor le manda y lo muestra en la pantalla (no escribe al servidor).  Veamos una segunda solución: El servidor lee el mensaje desde otro socket. Queda escuchando en el socket 4444 para los clientes que quieren recibir los mensajes y en 4445 a clientes que quieren mandar mensajes. Haremos otro programa cliente que haga esto.  Solución final: Finalmente acemos el cliente definitivo que también tiene un thread que lee y escribe en pantalla lo que el servidor manda y el programa principal acepta lineas del teclado y las manda al servidor.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 7 Comunicación Servidor-Cliente sin conexión  Hasta ahora hemos visto cómo se logran comunicar 2 programas estableciendo entre ellos un circuito virtual a traves de una conexión TCP/IP  Sabemos que en una conexión de este tipo se genera mucho tráfico y que la comunicación es más lenta, ya que el protocolo subyacente de confirmación, retransmisión, descarte y/o reordenación de paquetes se basa en mensajes de datagramas.  Habíamos visto que a veces el usuario debería optar por una transmisión sin conexión, especialmente si no es necesario garantizar la llegada de todos los datagramas.  Para eso existen en JAVA todos lor recursos de modo de mandar un datagrama aislado a un destinatario dado.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 8 Comunicación Servidor-Cliente sin conexión: pasos a seguir  La comunicación se basa en armar paquetes UDP y enviarlos a la internet con la siguiente información:  datos: un arreglo de bytes  número de port del destinatario: int  Dirección Internet del destinatario: InetAddress  El servidor se pone a escuchar en un socket dado si hay paquetes destinados a él.  El cliente arma un paquete y lo lanza a la internet.  El servidor recibe el paquete y extrae los datos, numero de port y dirección internet del enviador.  Si necesita responder manda un paquete a la dirección (port y dirección internet) que venía en el paquete recibido

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 9 Manejo de Datagramas en JAVA  La comunicación se basa en armar paquetes UDP y enviarlos a la internet con la siguiente información:  datos: un arreglo de bytes  número de port del destinatario: int  Dirección Internet del destinatario: InetAddress  El servidor se pone a escuchar en un socket dado si hay paquetes destinados a él.  El cliente arma un paquete y lo lanza a la internet.  El servidor recibe el paquete y extrae los datos, numero de port y dirección internet del enviador.  Si necesita responder manda un paquete a la dirección (port y dirección internet) que venía en el paquete recibido

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 10 Clases para Datagramas en JAVA: envío  Definición: Un datagrama es un mensaje independiente, autocontenido que se manda de un programa a otro por la red pero que su llegada, tiempo de llegada y contenido no estan garantizados.  Crear un socket por donde mandar el datagrama  DatagramSocket ds = new DatagramSocket();  Crear y armar el datagrama  byte[] datos = new byte[256];  InetAddress direccion = InetAddress.getByName(“  DatagramPacket paquete = new DatagramPacket(datos, datos.length,direccion,4444);  Mandarlo  ds.send(paquete);  Esperar respuesta  socket.receive(packet); //limpiarlo antes !!!

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 11 Clases para Datagramas en JAVA: recepción  Para poder recibir tengo que escuchar en un port acordado (ya que de otra manera no hay como ponerse de acuerdo)  socket = new DatagramSocket(4444);  preparar un Datagrama para recibir datos  byte[] datos = new byte[256];  DatagramPacket paquete = new DatagramPacket(datos,datos.length);  Ponerse a escuchar si alguien manda un datagrama a este computador a este port  socket.receive(paquete);  Sacar los datos, el port y la dirección de donde venía  int port = paquete.getPort();  InetAddress dirección = paquete getAddress();  String contenido = new String(paquete.getData());  Mandar una respuesta  DatagramPacket respuesta = new DatagramPacket(datos, datos.length, port, direccion);