ENTRADA/SALIDA ENTRADA/SALIDA DESDE O HACIA UN PROCESO

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 13 Ing. Ronald Criollo.
Advertisements

Curso de java básico (scjp)
Curso de Java Java – Redes Rogelio Ferreira Escutia.
Arquitectura de Sistema de E/S
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
Introducción Características de la nueva API E/S antes de Java 1.4 ¿Por qué NIO? E/S orientada a bloques El patrón Reactor Canales y Buffers Lectura y.
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.
EXCEPCIONES UNIDAD 5.
Programación Interactiva Aplicaciones Cliente-Servidor
“GUI para Conexiones y Transferencia de Datos Seguros”
Sockets y Threads en JAVA
Unidad 1. Manejo de ficheros
SOCKETS INTRODUCCIÓN DEFINICIÓN TIPOS DE SOCKETS USO DE SOCKETS.
Ingeniería en Automática Industrial Software para Aplicaciones Industriales I Ingeniería en Automática Industrial Software para Aplicaciones Industriales.
Archivos Implementar un método que lea una secuencia de números enteros de un archivo y compute la cantidad de elementos leídos.
1.2 Sintaxis del lenguaje Java.
PROTOCOLOS Un protocolo es un conjunto de reglas que hacen que la comunicación en una red sea más eficiente.
PROGRAMACIÓN ORIENTADA A OBJETOS
Servidor de Batalla Naval.
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.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Christophe Fontano Julien Alagnou Socket.
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.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CINCO CONSOLE.
Tema 6: Clases Antonio J. Sierra.
En Java las estructuras de repetición son las mismas que en C/C++.
Sistemas Operativos Distribuidos Prácticas Justo N. Hidalgo Sanz Universidad Antonio de Nebrija 2002/03.
Sistemas Operativos Centralizados y Distribuidos Carlos David Zepeda.
Igor Santos Grueiro. Ahora tenemos datos y datos …
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
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.
1 Programación Interactiva Archivos Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle.
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
Archivos.
1 Persistencia en Java Agustín J. González ELO-329.
Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre.
Programación I :: Prof. Yeniffer Peña Programación I Interface Gráfica de Usuario Presentación.
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.
El lenguaje de programación Java
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.
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.
ELO3091 Interfaz de Socket Agustín J. González ELO309.
PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros que no tienen.
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.
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
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
Manejo de Ficheros en JAVA
Teoría de Sistemas Operativos Sistema de I/O. 2 Introducción Una de las funciones principales del sistema operativo es el control de todos los dispositivos.
Andres Marín L. Programación sockets en java.
LABORATORIO DE ESTRUCTURA DE COMPUTADORES II Desarrollo de aplicación Cliente-Servidor.
INTEGRANTES : Selvin Rivas José Vásquez Francisco Pérez J’ Alberto Patal.
S ERVICIOS DE RED E I NTERNET T EMA 4 : I NSTALACIÓN Y ADMINISTRACIÓN DE SERVICIOS W EB Nombre: Adrián de la Torre López.
INGENIERIA EN SISTEMAS COMPUTACIONALES ASIGNATURA: PROGRAMACION ORIENTADA A OBJETOS ALUMNO: JAVIER MARTINEZ MARTINEZ.
Almacenamiento virtual de sitios web: «Hosts» virtuales
Nivel de Transporte en Internet
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Modelo OSI Para redes………
Instituto Tecnológico Superior de Libres Ingeniería en Sistemas Computacionales Segundo semestre Materia: Programación Orientada a Objetos Asesora: Ing.
 DIANA GARCIA VALERIO. CONCEPTO DE FLUJO DE JAVA:  La información que necesita un programa para su función se obtiene mediante una entrada de datos.
Programación I :: Prof. Yeniffer Peña Programación I Interface Gráfica de Usuario Presentación.
1 Introducción a las Comunicaciones en Red. import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static.
DOCENTE: EMILIO ISMAEL BUSTAMANTE MONTES
Transcripción de la presentación:

ENTRADA/SALIDA ENTRADA/SALIDA DESDE O HACIA UN PROCESO ENTRADA/SALIDA ENTRE PROCESOS Informática III-2007 Ing. Estela D'Agostino

ENTRADA /SALIDA Para obtener información: stream FUENTE leer PROGRAMA FUENTE: archivo, dispositivo entrada, socket. Informática III-2007 Ing. Estela D'Agostino

ENTRADA /SALIDA Para escribir información: stream DESTINO PROGRAMA escribe información DESTINO: archivo, dispositivo salida, socket. Informática III-2007 Ing. Estela D'Agostino

ENTRADA /SALIDA Entrada/Salida básica: desde un dispositivo de entrada o hacia un dispositivo de salida (teclado / monitor). Entrada/Salida desde archivos dentro de un mismo proceso Entrada/salida entre procesos (utilizando sockets). Informática III-2007 Ing. Estela D'Agostino

ENTRADA /SALIDA Antes de la version java 1.4 Los programas se comunican con flujos y estos flujos actúan como interfaz con el dispositivo o clase asociada Operación independiente del tipo de datos y del dispositivo Mayor flexibilidad (p. e. redirección, combinación) Informática III-2007 Ing. Estela D'Agostino

ENTRADA /SALIDA Leer Escribir abrir un stream mientras haya información leer información cerrar el stream Escribir abrir el stream escribir información Informática III-2007 Ing. Estela D'Agostino

ENTRADA /SALIDA (INF. II) Java tiene acceso a la entrada/ salida estándar a través de la clase java. lang. System Los flujos estándar son campos estáticos de System .System. in implementa la entrada estándar .System. out implementa la salida estándar .System. err implementa la salida de error Informática III-2007 Ing. Estela D'Agostino

Clasificación de flujos Representación de la información .Flujos de bytes .Flujos de caracteres Propósito Entrada - ( InputStream, Reader ) Salida - ( OutputStream, Writer ) Entrada/ Salida - ( RandomAccessFile ) Informática III-2007 Ing. Estela D'Agostino

Flujos de bytes Informática III-2007 Ing. Estela D'Agostino

Flujos de caracteres Informática III-2007 Ing. Estela D'Agostino

Combinación de flujos • Los flujos se pueden combinar para obtener la funcionalidad deseada Informática III-2007 Ing. Estela D'Agostino

Tipo de acceso Acceso Secuencial Directo o aleatorio - ( RandomAccessFile ) Informática III-2007 Ing. Estela D'Agostino

Flujos principales InputStreamReader Métodos de utilidad Lee bytes de un flujo InputStream y los convierte en caracteres Unicode Métodos de utilidad read () lee un único caracter ready() indica cuando está listo el flujo para lectura Informática III-2007 Ing. Estela D'Agostino

Flujos principales BufferedReader Método de utilidad Entrada mediante búfer, mejora el rendimiento Método de utilidad readLine() lectura de una línea como cadena InputStreamReader isr = new InputStreamReader( System. in); BufferedReader Teclado = new BufferedReader (isr); String cadena = Teclado. readLine(); Informática III-2007 Ing. Estela D'Agostino

Entrada/Salida desde archivos dentro de un mismo proceso Informática III-2007 Ing. Estela D'Agostino

Archivos de texto FileReader Util para leer archivos de texto Constructor: FileReader( String nombreArchivo) PrintWriter Implementa un flujo de salida de caracteres Métodos de utilidad .print(), println(), close() Informática III-2007 Ing. Estela D'Agostino

Archivos de texto FileWriter Util para escribir archivos de texto Constructores FileWriter( String nombrearchivo) -- reescribe FileWriter( String nombrearchivo, boolean añadirFinal) -- añade Informática III-2007 Ing. Estela D'Agostino

Archivos Clase File Constructores Constructores de otras clases File( String ruta) File( String ruta, String nombre) File( File directorio, String nombre) Constructores de otras clases FileReader( File archivo) FileWriter( File archivo) Informática III-2007 Ing. Estela D'Agostino

Métodos canRead() comprueba si el archivo se puede leer canWrite() comprueba siel archivo se puede escribir delete() borra dicho archivo getPath() devuelve la ruta del archivo mkdir() crea un directorio con la ruta del objeto que lo recibe isDirectory() comprueba si dicho archivo es un directorio Informática III-2007 Ing. Estela D'Agostino

Flujos Clase ObjectOuputStream Clase ObjectInputStream Método - writeObject() Ejemplo: flujoSalida. writeObjetct (objetoClase); Clase ObjectInputStream Método - readObject() Ejemplo: objetoClase = (Clase) flujoEntrada. readObject(); Informática III-2007 Ing. Estela D'Agostino

Serialización de objetos Serializar es almacenar objetos de forma permanente (p. e. en un archivo o en un flujo de comunicación) No es necesario realizar conversiones Útil para portabilidad y para compartir objetos entre aplicaciones Informática III-2007 Ing. Estela D'Agostino

Interfaz de serialización Cualquier clase que desee poder serializar sus objetos debe implementar el interfaz Serializable En esta implementación el objeto define como debe almacenarse o recuperarse de un archivo Si se trata de serializar un objeto que no lo implementa se obtiene la excepción NotSerializableException No se serializan los miembros static Informática III-2007 Ing. Estela D'Agostino

Interfaz de serialización •Las clases que necesiten algún tratamiento especial en la serialización deben implementar estos dos métodos private void writeObject (java. io. ObjectOutputStream salida) throws IOException private void readObject (java. io. ObjectInputStream entrada) throws IOException, ClassNotFoundException; Informática III-2007 Ing. Estela D'Agostino

Entrada/Salida entre procesos Informática III-2007 Ing. Estela D'Agostino

Comunicación Entre Procesos Maquinas en red Cliente - Servidor Informática III-2007 Ing. Estela D'Agostino

Protocolo Si se quiere establecer una comunicación entre dos máquinas se debe trabajar con protocolos. Un protocolo especifica como deben comunicarse dos componentes de red. En general se trabaja con una familia de protocolos que trabajan en forma conjunta para enviar datos de una máquina a otra. Protocolo TCP/IP. Informática III-2007 Ing. Estela D'Agostino

Cliente - Servidor Cuando una aplicación informática, definida como un conjunto de datos y programas, tiene a estos repartidos entre dos o mas ordenadores, se dice que la arquitectura es cliente servidor. Informática III-2007 Ing. Estela D'Agostino

Cliente - Servidor Proceso Servidor Conexión Sockets Proceso Cliente Informática III-2007 Ing. Estela D'Agostino

Cliente - Servidor Proceso Cliente red Proceso Servidor Informática III-2007 Ing. Estela D'Agostino

Comunicación Entre Procesos Los sockets son un sistema de comunicación entre procesos de diferentes máquinas de una red. Más exactamente, un socket es un punto de comunicación por el cual un proceso puede emitir o recibir información. Es una abstracción de software para imaginarse la conexión entre dos máquinas Informática III-2007 Ing. Estela D'Agostino

Aplicaciones cliente/servidor El programa servidor permanece escuchando a los clientes. El programa cliente solicita servicios al servidor. Informática III-2007 Ing. Estela D'Agostino

Comunicación Entre Procesos Paquete java.net Java ofrece comunicaciones basadas en sockets que permiten a las aplicaciones manejar el trabajo en redes como si fueran E/S de archivos. Informática III-2007 Ing. Estela D'Agostino

Comunicación Entre Procesos Sockets activos: pueden enviar y recibir datos a través de una conexión abierta Sockets pasivos: esperan intentos de conexión. Cuando llega una conexión entrante le asignan un socket activo y sigue esperando por otro intento. No sirven para enviar o recibir datos. Informática III-2007 Ing. Estela D'Agostino

Comunicación Entre Procesos Sockets de flujo: orientado a la conexión. Protocolo TCP Sockets de datagrama: no orientado a la conexión. Protocolo UDP Informática III-2007 Ing. Estela D'Agostino

Sockets De Flujo Un proceso establece una conexión con otro proceso. Mientras la conexión existe , los datos fluyen en un flujo continuo. Protocolo empleado TCP. Informática III-2007 Ing. Estela D'Agostino

Cliente - Servidor Servidor El servidor corre en una máquina especifica, tiene un socket enlazado a un número de puerto Escucha el socket del cliente esperando que éste realice una petición Informática III-2007 Ing. Estela D'Agostino

Puerto Un puerto es una dirección de 16 bits, asociada comúnmente a una aplicación. Un ordenador dispone de 65536 puertos. Los primeros 1024 se reservan para servicios estándares y para procesos del sistema operativo. Informática III-2007 Ing. Estela D'Agostino

Cliente - Servidor Servidor El servidor se ejecuta y publica en que número de puerto ofrece el servicio. Espera por petición de algún cliente. Informática III-2007 Ing. Estela D'Agostino

Cliente - Servidor Cliente Conoce el nombre de la máquina sobre la cual corre el servidor y el número de puerto. Cliente solicita la conexión. Se establece la conexión. Informática III-2007 Ing. Estela D'Agostino

Cliente - Servidor Informática III-2007 Ing. Estela D'Agostino

Cliente - Servidor Al establecer la comunicación el servidor determina un nuevo puerto para esa conexión y sigue escuchando por el puerto primitivo para atender otros clientes. Informática III-2007 Ing. Estela D'Agostino

Publicar la direcc. del canal Servidor Cliente Abrir canal de comunicación ServerSocket ref Abrir canal de comunicación Socket ref Publicar la direcc. del canal ref = new (Puerto) Espera recibir solicitudes While, for o do Esperar peticiones ref.accept() Conectar con servidor ref=new(host,port) Crear proceso hijo hijo = ref.accept() Envio y recepción de datos hijo read() | write() Envio y recepción de datos hijo read() | write() Cerrar canal de comunicación ref.close() Cerrar canal de comunicación ref.close()

Consideraciones El servidor debe estar en ejecucion antes de que los clientes intenten conectarse. El cliente debe crear un socket en el cual se especifique la direccion IP y el número de puerto de la aplicación que le brinda el servicio deseado. El servidor creara un socket para el cliente, durante su tiempo de vida no se puede asignar a otros clientes. Informática III-2007 Ing. Estela D'Agostino

Consideraciones Se establece la conexión entre el socket del cliente y el del servidor y pueden intercambiar datos. Informática III-2007 Ing. Estela D'Agostino

El paquete java.net Proporciona una interfaz orientada a objetos para trabajar con sockets Informática III-2007 Ing. Estela D'Agostino

Java.net.ServerSocket La utiliza el servidor para recibir peticiones de los clientes. Esta clase tiene un método accept( ). La llamada a este método hace que la aplicación se bloquee esperando una petición de un cliente. Cuando esto suceda la clase ServerSocket creara un Socket y lo usara para comunicarse con el cliente. Un servidor puede tener una única instancia de ServerSocket relacionadas con varias instancias de Sockets. Informática III-2007 Ing. Estela D'Agostino

Java.net.ServerSocket public ServerSocket (int puerto) throws IOException public ServerSocket (int puerto, int longitudCola) throws IOException public ServerSocket (int puerto, int longitudCola, InetAdress dirInternet) throws IOException public Socket accept( ) throws IOException public InetAddress getInetAddress ( ) public int getLocalPort ( ) public void close ( ) throws IOException Informática III-2007 Ing. Estela D'Agostino

Java.net.Socket Implementa sockets activos. Pueden recibir y enviar información. public Socket (String host, int puerto) public Socket (InetAddress direccion, int puerto) public InetAdress getInetAdress ( ) public InputStream getInputStream ( ) public OutputputStream getOutputStream ( ) public void close ( ) Informática III-2007 Ing. Estela D'Agostino

Implementación cliente Socket miCliente; try { miCliente = new Socket( "maquina",numeroPuerto ); } catch( IOException e ) { System.out.println( e ); } Informática III-2007 Ing. Estela D'Agostino

Implementación servidor Socket miServicio; try { miServicio = new ServerSocket( numeroPuerto ); } catch( IOException e ) { System.out.println( e ); } Informática III-2007 Ing. Estela D'Agostino

Implementación servidor Debe crear un socket que atienda las peticiones de los clientes Socket socketServicio = null; try { socketServicio = miServicio.accept(); } catch( IOException e ) { System.out.println( e ); } Informática III-2007 Ing. Estela D'Agostino

Cerrar comunicación Debo cerrar la comunicación del lado del cliente try { salida.close(); entrada.close(); miCliente.close(); } catch( IOException e ) { System.out.println( e ); } Informática III-2007 Ing. Estela D'Agostino

Cerrar comunicación Debo cerrar la comunicación del lado del servidor try { salida.close(); entrada.close(); socketServicio.close(); miServicio.close(); } catch( IOException e ) { System.out.println( e ); } Informática III-2007 Ing. Estela D'Agostino

Problemas con operaciones de I/O Las operaciones de I/O son mucho mas lentas, que las operaciones que se resuelven en la CPU. Java.nio.* Informática III-2007 Ing. Estela D'Agostino

Paquete java.nio Permite la transferencia de datos en forma eficaz. Transfiere bloques de datos. Los sockets de nio trabajan sin bloqueo. No necesito un hilo por cada cliente. Java.io se sigue necesitando para el tratamiento de datos. Java.nio se utiliza para aplicaciones intensivas en I/O. Informática III-2007 Ing. Estela D'Agostino

Paquete java.nio Agrega nuevas funcionalidades: Buffers Channels Informática III-2007 Ing. Estela D'Agostino

Conexión disco-SO-aplicación Controlador disco Disco hardware Proceso buffer DMA read() user space kernel space Informática III-2007 Ing. Estela D'Agostino

Paquete java.nio Cambia el enfoque de trabajo bytes Java.io más lento caracteres Java.nio bloques menos elegante. más rápido. similar a como lo hace el SO. Informática III-2007 Ing. Estela D'Agostino

Paquete java.nio JDK 1.4. java.io.* java.nio. * se integraron bien. Informática III-2007 Ing. Estela D'Agostino

Paquete java.nio Buffer : es un contenedor (clase abstracta) para una cantidad fija de datos. Es un arreglo de tipos de datos primitivos, envuelto por un objeto. ByteBuffer CharBuffer ShortBuffer IntBuffer LongBuffer FloatBuffer DoubleBuffer Informática III-2007 Ing. Estela D'Agostino

Buffer Posición: es el índice del próximo elemento que será leído o escrito. Se actualiza automaticamente por métodos set o get. Límite: Primer elemento del buffer que no debería ser escrito o leído. Es la cantidad de elementos que viven en el buffer en un momento dado. Capacidad: máximo número de elementos que puede tener, se le da valor al crearlo y no se puede cambiar. Mark: una posición marcada. Está indefinida hasta que toma un valor. 0 <= mark <= position <= limit <= capacity Informática III-2007 Ing. Estela D'Agostino

Buffer Posición Posición Informática III-2007 Ing. Estela D'Agostino

Paquete java.nio Canales : representan una conexión abierta a una entidad, como ser dispositivo de hard, disco, socket. Pueden operar con bloqueo o sin él. Son bidireccionales. Es una conexión entre un buffer y una fuente o un destino. Informática III-2007 Ing. Estela D'Agostino

Paquete java.nio Stream trabaja bytes Canal trabaja buffer Informática III-2007 Ing. Estela D'Agostino

Paquete java.nio El paquete java.io y java.net para la version java 1.4 cambia un poco para poder trabajar con canales. Informática III-2007 Ing. Estela D'Agostino