CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Christophe Fontano Julien Alagnou Socket.

Slides:



Advertisements
Presentaciones similares
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.
Advertisements

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”
INF 1400: Redes de Computadores
Sockets y Threads en JAVA
Sistemas Informáticos Distribuidos
ENTRADA/SALIDA ENTRADA/SALIDA DESDE O HACIA UN PROCESO
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament dArquitectura de Computadors (Seminaris de CASO) Autors MOVING JAVA INTO MOBILE PHONES Josep Pinyol.
PROGRAMAS DE INTERCAMBIO DE FICHEROS
Introducción Desarrollo de Windows Services Instalación.
RMI (Remote Method Invocation)
Servidor.pl #!/usr/local/bin/perl use Socket; ($port) $port = 2345 unless $port; Empleamos el módulo Socket, equivalente a las definiciones que.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (apunts de l’assignatura en format transparència) Multithreading and.
Programación Orientada a Objetos en Java
Servidor de Batalla Naval.
Aplicación de Domótica Iluminación Remota FASE 1.
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.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
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.
Manejo de excepciones en Java
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (apunts de l’assignatura en format transparència) Introducción a los.
Introducción a la Programación Orientada a Objetos Redefinición y Sobrecarga Dada la siguiente jerarquía de clases: Alfa Delta Beta.
Realizado por: Bertha Palomeque A. Rodrigo Barzola J. Sensor de Temperatura utilizando el Starter Kit Javelin Stamp.
Área de Ingeniería Telemática 1 Universidad de Sevilla Fundamentos de Telemática Tema 16: Comunicaciones en Red.
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.
Sistemas Operativos Distribuidos Prácticas Justo N. Hidalgo Sanz Universidad Antonio de Nebrija 2002/03.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Protocolo IP v.6 Susana Lores Rubira.
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
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.
USA agenda e itemAgenda
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.
Tema 14: java.lang Antonio J. Sierra. Índice 1. Introducción. 2. Gestión de cadenas. –String –StringBuffer 3. Clases para los tipos simples. –Number –Envolventes.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Sincronización de Threads en Java Josep Joan.
Programación Orientada a Objetos
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.
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.*;
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.
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,
COMPARATIVA CLIENT/SERVIDOR AMB SOCKETS C vs. JAVA MANEL DOMÍNGUEZ SERRA GERARD ROCA MALLOFRÉ.
ELO3091 Interfaz de Socket Agustín J. González ELO309.
Sockets programming. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.
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: 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.
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.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors JINI Jose Antonio Pavón David Santos.
Andres Marín L. Programación sockets en java.
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.
Capa Aplicación: Programación de sockets
Nivel de Transporte en Internet
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.
1 Introducción a las Comunicaciones en Red. import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static.
INTEGRANTES: JORGE CRUZ DE OCAMPO EDSON SANCHEZ SUAREZ
Capa Aplicación: Programación de sockets
Capa Aplicación: Programación de sockets
Comunicación Servidor-Cliente sin conexión
DOCENTE: EMILIO ISMAEL BUSTAMANTE MONTES
i Threads en JAVA Sockets Lorena Alvarez Montiel – D
Transcripción de la presentación:

CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Christophe Fontano Julien Alagnou Socket & Multithreading en Java

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 2 Socket - presentacion o Package java.net, 5 clases importantes: –InetAddress –Socket –ServerSocket –DatagramSocket –DatagramPacket o 2 tipos de conexión: –Orientado a conexión camino virtual entre servidor y cliente, sin pérdidas de información ni duplicados, la información es recibida en el mismo orden. El cliente abre una sesión en el servidor y este guarda un estado del cliente. ServerSocket Socket Cliente Servidor Connexions

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 3 –No orientado a conexión Envío de datagramas de tamaño fijo. No es fiable, puede haber pérdidas de información y duplicados, y la información puede llegar en distinto orden del que se envía. No se guarda ningún estado del cliente en el servidor, por ello, es más tolerante a fallos del sistema. Socket - presentacion senderDatagramSocket DatagramPacket receiver DatagramSocket

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 4 Socket - classe InetAddress o Obtener una InetAddress –public static InetAdress getByName(String hostName) –public static InetAdress getByAddress(byte[] addr) –public static InetAdress getByAddress(String host, byte[] addr) –public static InetAdress getLocalHost() –ex: para Solfoc.fib.upc.es hostName = “Solfoc.fib.upc.es” addr[0]=147 addr[1]=83 addr[2]=41 addr[3]=34 o Servicios –public byte[] getAddress () devuelve addr[0]=147 addr[1]=83 addr[2]=41 addr[3]=34 –public String getHostAddress () devuelve “ ” –public String getHostName () devuelve “Solfoc.fib.upc.es”

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 5 Socket - classe Socket : constructores o Tcp: utilización de flujos de datos Java: –clase InputStream –clase OutputStream  Constructores –Socket(InetAdress address, int port) –Socket(InetAdress address, int port, InetAdress localAddr, int localPort) –Socket(String host, int port) –Socket(String host, int port, InetAdress localAddr, int localPort) –address, host, port: caracteristicas del servidor

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 6 Socket - classe Socket  Métodos de información del socket –InetAddress getInetAddress () Devuelve la InetAddress del servidor. –InetAddress getLocalAddress () Devuelve la InetAdress del cliente. –int getLocalPort () Devuelve el puerto local utlizado por el socket. –int getPort () Devuelve el puerto del servidor.

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 7 Socket - classe ServerSocket  Constructores –ServerSocket (int port) –ServerSocket (int port, int backlog) –ServerSocket (int port, int backlog, InetAddress bindAddr)  Métodos de comunicación –Socket accept () espera una conexión sobre el ServerSocket –void close ()

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 8 Socket - classe ServerSocket  Mètodos de información del socket – InetAddress getInetAddress () Devuelve la InetAdress del servidor. – int getLocalPort () Devuelve el puerto del servidor utlizado por el socket. – void setSoTimeout (int timeout) 0 : accept bloqueando. N (<>0): accept bloqueara durante n milisegundos – int getSoTimeout () Devuelve la corriente timeout

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 9 Server(){ ServerSocket listen=null; Socket service=null; try{ listen=new ServerSocket(5432,5); while(true){ service=listen.accept(); OutputStream os=service.getOutputStream(); InputStream is=service.getInputStream(); os.write(is.read()); service.close(); } catch(Exception e){e.printStackTrace();} } Socket - Ejemplo de servidor

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 10 Socket - Ejemplo de cliente Client(){ Socket mySock=null; try{ mySock=new Socket(InetAddress.getLocalHost(),5432); OutputStream os=mySock.getOutputStream(); InputStream is=mySock.getInputStream(); os.write((int)'a'); System.out.println("receive:"+is.read()); mySock.close(); } catch(Exception e){e.printStackTrace();} }

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 11 Socket - classe DatagramSocket o UDP: Utilización de paquetes de datos para la comunicación –clase DatagramPacket o Constructores – DatagramSocket () – DatagramSocket (int port) – DatagramSocket (int port, InetAddress laddr) o Mètodos de comunicación – void receive (DatagramPacket p) – void send (DatagramPacket p) – void close ()

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 12 Socket - classe DatagramSocket o Mètodos de información del socket – InetAddress getLocalAddress () Devuelve la direccion al cual el socket ha hecho el bind. – int getLocalPort () Devuelve el puerto al cual el socket ha hecho el bind. – void setSoTimeout (int timeout) 0: receive bloqueando. N (n<>0): receive bloqueara durante n milisegundos – int getSoTimeout () Devuelve la corriente timeout

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 13 Socket - classe DatagramPacket o Constructores: –public DatagramPacket (byte[] buff, int length) Construye un DatagramPacket para recibir paquetes en el buffer buff, de longitud length –public DatagramPacket (byte[] buff, int length, InetAddress address, int port) Construye un DatagramPacket para enviar paquetes con datos del buffer buff, de longitud length, a address y el puerto port. o Servicios: Para la manipulación de los diferentes campos de un DatagramPacket disponemos de los siguientes métodos: set/getAddress set/getData set/getLength set/getPort

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 14 Sender(){ InetAddress address=InetAddress.getLocalHost(); String mess="message to send"; int messlength=mess.length(); byte[]message=new byte[messlength]; mess.getBytes(0,messlength,message,0); DatagramPacket packet=new DatagramPacket(message,messlength,address,4321); DatagramSocket sock=new DatagramSocket(); sock.send(packet); } Receiver(){ byte []buffer=new byte[1024]; String mess; DatagramPacket packet=new DatagramPacket(buffer,buffer.length); DatagramSocket sock=new DatagramSocket(4321); while(true){ sock.receive(packet); mess=new String(buffer,0,0npacket.getLength()); System.out.println("Packet receive: message="+mess+ "-sender="+packet.getAdress.getHostName()+"port="+packet.getPort()); } Socket - Ejemplo sender receiver

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 15 Thread - Atributos de un thread en JAVA o Un thread es un objeto Java que tiene: –Nombre –Prioridad Ha de seguir la siguiente relación –MIN_PRIORITY=1 <= Prioridad <= MAX_PRIORITY = 10 –La prioridad por defecto es NORM_PRIORITY = 5 o se puede crear un Thread de 2 maneras: –extender la clase Thread y override el metodo run() –implementar la interfaz Runnable

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 16 Thread - la interfaz Runnable o Esta interfaz define solamente un método: run() –public void run() “start” el Thread provocara la llamada de este método. o Cada objeto que intenta ejecutar un thread debe implementar la interfaz Runnable.

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 17 Thread - la clase Thread o La classe Thread implementa esta interfaz y define un thread que no hace nada. o Cuando se crea un thread no se pone en marcha, se lo hemos de indicar explícitamente por una llamada al método start(). o Constructores –public Thread () –public Thread (String name) –public Thread (Runnable target) –public Thread (Runnable target, String name) –name: nombre del Thread target: implementacion de una classe que define el metodo run()

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 18 Thread - Scheduling –void run() Es el método que ejecutará un thread cuando este se ponga en marcha. –void start() Inicia la ejecución del thread.Provoca la ejecucion de run(). –void join() Espera a que un thread termine su ejecución. Podemos especificar el tiempo de espera máximo. –void sleep(long milis) Bloquea el thread milis milisegundos. Hay otro parámetro que permite afinar más el tiempo de bloqueo en nanosegundos –void stop/destroy() Destruye el thread sin eliminar estructuras, esto es tarea del método join.

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 19 Thread - Servicios generales de la clase Thread –public String getName() Devuelve el nombre que identifica al thread. –public String setName(String name) Cambia el nombre del thread. –public int getPriority() Devuelve la prioridad del thread. –public void setPriority (int newPriority) Cambia la prioridad del thread –static Thread currentThread() Devuelve el thread que se está ejecutando actualmente. –boolean isAlive() true si el Thread esta ejecutando, false si no.

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 20 public class Clock extends Applet implements Runnable { private Thread clockThread = null; public void start() { if (clockThread == null) {//create Thread using this runnable clockThread = new Thread(this, "Clock"); clockThread.start(); } public void run() { Thread myThread = Thread.currentThread(); while (clockThread == myThread) { repaint(); try {//wait 1 second before refresh Thread.sleep(1000); } catch (InterruptedException e){ // the VM doesn't want us to sleep anymore } public void paint(Graphics g) { // get the time and convert it to a date Date date = Calendar.getInstance().getTime(); g.drawString(DateFormat.getTimeInstance().format(date),5,10); } //overrides Apllet ’s stop method public void stop() { clockThread = null; } Thread - Ejemplo

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 21 Thread - Sincronización o Ejemplo de problema : Acceso a una variable global –se solucionaría de la siguiente forma: synchronized (this) { x++; } (this es la clase que contiene la variable global) –Con esto se garantiza el acceso en exclusión mutua a la variable.

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 22 Thread - Sincronización(I) o Acceso a un método en exclusión mutua : tenemos las siguientes opciones –Igual que el ejemplo anterior : synchronized (this) { this.setValue(8); } –Declarando el método como sincronizado: los metodos set() y get() seran ejecutados en exclusión mutua public class VarGlobal{ int valorCompartida=123; public synchronized int get(){ return valorCompartida; } public synchronized void set(int v){ valorCompartida=v; }

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 23 o También se pueden sincronizar varios threads mediante los monitores, utilizando los métodos : –wait() espera que otro Thread llama notify() o notifyAll() –notify() despierta uno sólo Thread que espera en este monitor. –notifyAll() despierta todos los Thread que espera en este monitor. o Ejemplo de un monitor: Thread - Sincronización (II)

Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament. d’Arquitectura de Computadors - UPC 24 public class ProductorConsumer { private int value; private boolean valueAvailable = false; public synchronized int get() { int ret; while (valueAvailable == false) { try { wait(); } catch (InterruptedException e) { } } valueAvailable = false; ret =value; notifyAll(); return ret; } public synchronized void put(int val) { while (valueAvailable == true) { try { wait(); } catch (InterruptedException e) { } } value = val; valueAvailable = true; notifyAll(); } Thread - Sincronización (III) - monitor