1 / 65

ENTRADA/SALIDA

ENTRADA/SALIDA. ENTRADA/SALIDA DESDE O HACIA UN PROCESO ENTRADA/SALIDA ENTRE PROCESOS. información. PROGRAMA. ENTRADA /SALIDA. Para obtener información:. stream. FUENTE. leer. FUENTE: archivo, dispositivo entrada, socket. información. PROGRAMA. ENTRADA /SALIDA.

zytka
Download Presentation

ENTRADA/SALIDA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ENTRADA/SALIDA • ENTRADA/SALIDA DESDE O HACIA UN PROCESO • ENTRADA/SALIDA ENTRE PROCESOS Ing. Estela D'Agostino

  2. información PROGRAMA ENTRADA /SALIDA • Para obtener información: stream FUENTE leer FUENTE: archivo, dispositivo entrada, socket. Ing. Estela D'Agostino

  3. información PROGRAMA ENTRADA /SALIDA • Para escribir información: stream DESTINO escribe DESTINO: archivo, dispositivo salida, socket. Ing. Estela D'Agostino

  4. 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). Ing. Estela D'Agostino

  5. 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) Ing. Estela D'Agostino

  6. ENTRADA /SALIDA • Leer • abrir un stream • mientras haya información • leer información • cerrar el stream • Escribir • abrir el stream • mientras haya información • escribir información • cerrar el stream Ing. Estela D'Agostino

  7. 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 Ing. Estela D'Agostino

  8. 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 ) Ing. Estela D'Agostino

  9. Flujos de bytes Ing. Estela D'Agostino

  10. Flujos de caracteres Ing. Estela D'Agostino

  11. Combinación de flujos • • Los flujos se pueden combinar para obtener lafuncionalidad deseada Ing. Estela D'Agostino

  12. Tipo de acceso • Acceso • Secuencial • Directo o aleatorio - ( RandomAccessFile) Ing. Estela D'Agostino

  13. Flujos principales • InputStreamReader • 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 Ing. Estela D'Agostino

  14. Flujos principales • BufferedReader • 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(); Ing. Estela D'Agostino

  15. Entrada/Salida desde archivos dentro de un mismo proceso Ing. Estela D'Agostino

  16. 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() Ing. Estela D'Agostino

  17. Archivos de texto • FileWriter • Util para escribir archivos de texto • Constructores • FileWriter( String nombrearchivo) -- reescribe • FileWriter( String nombrearchivo, boolean añadirFinal) -- añade Ing. Estela D'Agostino

  18. Archivos • Clase File • Constructores • File( String ruta) • File( String ruta, String nombre) • File( File directorio, String nombre) • Constructores de otras clases • FileReader( File archivo) • FileWriter( File archivo) Ing. Estela D'Agostino

  19. 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 Ing. Estela D'Agostino

  20. Flujos • Clase ObjectOuputStream • Método - writeObject() • Ejemplo: flujoSalida. writeObjetct (objetoClase); • Clase ObjectInputStream • Método - readObject() • Ejemplo: objetoClase = (Clase) flujoEntrada. readObject(); Ing. Estela D'Agostino

  21. 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 Ing. Estela D'Agostino

  22. 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 Ing. Estela D'Agostino

  23. 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; Ing. Estela D'Agostino

  24. Entrada/Salida entre procesos Ing. Estela D'Agostino

  25. Comunicación entre procesos Maquinas en red Cliente - Servidor Comunicación Entre Procesos Ing. Estela D'Agostino

  26. 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. Ing. Estela D'Agostino

  27. 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. Ing. Estela D'Agostino

  28. Proceso Servidor Proceso Cliente Cliente - Servidor Conexión Sockets Ing. Estela D'Agostino

  29. Proceso Cliente Proceso Cliente Proceso Cliente Proceso Cliente Proceso Servidor Proceso Cliente Proceso Servidor Cliente - Servidor red Ing. Estela D'Agostino

  30. 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 Ing. Estela D'Agostino

  31. Aplicaciones cliente/servidor • El programa servidor permanece escuchando a los clientes. • El programa cliente solicita servicios al servidor. Ing. Estela D'Agostino

  32. 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. Ing. Estela D'Agostino

  33. 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. Ing. Estela D'Agostino

  34. 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 Ing. Estela D'Agostino

  35. 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. Ing. Estela D'Agostino

  36. 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 Ing. Estela D'Agostino

  37. 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. Ing. Estela D'Agostino

  38. 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. Ing. Estela D'Agostino

  39. 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. Ing. Estela D'Agostino

  40. Cliente - Servidor Ing. Estela D'Agostino

  41. 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. Ing. Estela D'Agostino

  42. Servidor Cliente Abrir canal de comunicación ServerSocket ref Abrir canal de comunicación Socket ref Conectar con servidor ref=new(host,port) Publicar la direcc. del canal ref = new (Puerto) Espera recibir solicitudes While, for o do Esperar peticiones ref.accept() 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()

  43. 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. Ing. Estela D'Agostino

  44. Consideraciones • Se establece la conexión entre el socket del cliente y el del servidor y pueden intercambiar datos. Ing. Estela D'Agostino

  45. El paquete java.net • Proporciona una interfaz orientada a objetos para trabajar con sockets Ing. Estela D'Agostino

  46. 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. Ing. Estela D'Agostino

  47. 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 Ing. Estela D'Agostino

  48. 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 ( ) Ing. Estela D'Agostino

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

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

More Related