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
UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL
Advertisements

Introducción a C#.
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.
Ayudantía Pre-Actividad 5 Multimedios. Ayudantía Pre-Actividad 5 (1) creación de varias clases, y composición (2) manejo de threads (3) manejo de excepciones.
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
Clases en C++.
Programación Interactiva Hilos
“GUI para Conexiones y Transferencia de Datos Seguros”
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
Introducción a Programación Concurrente
Resolución de Problemas y Algoritmos Buffer - Read & Readln
Funciones. Programación, Algoritmos y Estructuras de Datos.
Capitulo 4 Excepciones.
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.
Tema 12: Programación multihilo
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
10. Hilos Definición y ejecución Thread y Runnable
Java. Threads (Hebras) Los sistemas operativos actuales permiten la multitarea, aunque esta se de tiempo compartido cuando se trabaja con un solo procesador.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
Tecnologías para el desarrollo de aplicaciones Web
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.
Archivos y Búsqueda Secuencial
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
Unidad III Administración de procesos
Desarrollador Profesional de Juegos Programación III Unidad II Una clase thread para window.
Hilos - Lightweight process - Procesos ligeros
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Sincronización de Threads en Java Josep Joan.
Capítulo 1 “Elementos de Programación”
Capítulo 5 - b: Hilos. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Ejemplo de hilos: un applet Un.
Un programa no es nada mas que una serie de instrucciones dadas al ordenador en un lenguaje entendido por el, para decirle exactamente lo que queremos.
Computación II Repaso de java Karina Figueroa Mora.
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.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
Applets CONTENIDO ¿Que es un applet? Lo básico de un applet Ciclo de vida de un Applet Las etiquetas de HTML Pasando información a los applets.
Hola mundo. 2 En Java para indicar el inicio y fin de un bloque de instrucciones utiliza las llaves { } es decir: { Inicio de instrucciones para la clase.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
1 Capítulo 21: Interacción Cliente Servidor ICD 327: Redes de Computadores Agustín J. González.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
TEMA 2. Programación Concurrente
Java.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
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.
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.
Servidores Concurrentes
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.
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.
CRUCIGRAMA HORIZONTALES: VERTICALES:
Unidad 4. Servicios de acceso remoto
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Desarrollador Profesional de Juegos Programación III Unidad II Trabajando con bloqueo de datos.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Tema 1: Concurrencia con Java
Objetos con linea de ejecucion propia
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 Ejemplo de Threads: escritura de la clase public class SimpleThread extends Thread { public SimpleThread(String str) { super(str); } public void run() { for (int i = 0; i < 10; i++) { System.out.println(i + " " + getName()); try { this.sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) {} } System.out.println("DONE! " + getName()); }  El método this.sleep(milisegundos) debe ir en un bloque try and catch

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 2 Ejemplo de Threads: Uso de la clase nueva public class TwoThreadsTest { public static void main (String[] args) { SimpleThread t1,t2; t1 = SimpleThread("Jamaica"); t2 = SimpleThread("Fiji"); t1.start(); t2.start() }  El método start() inicia la ejecucón de un thread. Esto implica que se empieza a ejecutar el código escrito en el método run del thread. También existen otros métodos que se le pueden aplicar a un thread: suspend(), resume(), stop().

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 3 Problemas de sincronización con Threads  Los threads tienen la ventaja que pueden compartir memoria  Esto también es una desventaja cuando se requiere algún orden en la administración de los recursos  Pensemos en el problema de “repartir” (consumir) números.  Si el productor de números está en el servidor y hay varios threads clientes que piden números, debemos tener cuidado de no repartir el mismo número a clientes distintos  Veamos el problema de la sincronización en un ejemplo

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 4 Cómo usar threads para hacer servidores concurrentes  Hacer una clase Thread que tenga como variables de un objeto un socket y flujos de entrada y/o salida.  Programar el constructor de modo que reciba como parámetro un socket y haga todo lo necesario para dejar inicializado el ambiente para empezar a atender al cleinte (por ejemplo, abrir flujos de datos de entrada y/o salida del socket recibido)  Programar el método run de modo que implemente el protocolo necesario.  Programar un método main que en un ciclo infimito se ponga a escuchar en un port dado la llegada de clientes.  Con cada cliente nuevo crear un thread nuevo y pasar como parámetro el socket

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 5 Veamos un ejemplo:  Primero veremos un servidor iterativo que atiende a clientes en un ciclo  La atención consiste en enviar una serie de números que el cliente va leyendo e imprimiendo  Sin cambiar ni una línea de código en el cliente, reeplazaremos el servidor por uno concurrente.  Ejercicio: Copiar los archivos UnClienteQueEscribe.java y UnServidorQueOye.java y completar lo que falta  Ojo: no hay concurrencia, ES MUY SIMPLE  Ponerse a Escribir !!!! (los primeros 2 grupos que logren comunicación de ida y vuelta tienen 0.5+ en la prueba)

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 6 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 7 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 8 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  El cliente sólo puede escribir, el servidor sólo puede leer, Modifíquelos !