La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Informática III-2007Ing. Estela D'Agostino1 ENTRADA/SALIDA ENTRADA/SALIDA DESDE O HACIA UN PROCESO ENTRADA/SALIDA ENTRE PROCESOS."— Transcripción de la presentación:

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

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

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

4 Informática III-2007Ing. Estela D'Agostino4 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). ENTRADA /SALIDA

5 Informática III-2007Ing. Estela D'Agostino5 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) ENTRADA /SALIDA

6 Informática III-2007Ing. Estela D'Agostino6 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 ENTRADA /SALIDA

7 Informática III-2007Ing. Estela D'Agostino7 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 ENTRADA /SALIDA (INF. II)

8 Informática III-2007Ing. Estela D'Agostino8 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 )

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

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

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

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

13 Informática III-2007Ing. Estela D'Agostino13 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

14 Informática III-2007Ing. Estela D'Agostino14 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(); Flujos principales

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

16 Informática III-2007Ing. Estela D'Agostino16 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()

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

18 Informática III-2007Ing. Estela D'Agostino18 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)

19 Informática III-2007Ing. Estela D'Agostino19 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

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

21 Informática III-2007Ing. Estela D'Agostino21 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

22 Informática III-2007Ing. Estela D'Agostino22 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

23 Informática III-2007Ing. Estela D'Agostino23 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; Interfaz de serialización

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

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

26 Informática III-2007Ing. Estela D'Agostino26 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.

27 Informática III-2007Ing. Estela D'Agostino27 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.

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

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

30 Informática III-2007Ing. Estela D'Agostino30 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 Comunicación Entre Procesos

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

32 Informática III-2007Ing. Estela D'Agostino32 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. Comunicación Entre Procesos

33 Informática III-2007Ing. Estela D'Agostino33 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. Comunicación Entre Procesos

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

35 Informática III-2007Ing. Estela D'Agostino35 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.

36 Informática III-2007Ing. Estela D'Agostino36 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 Cliente - Servidor

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

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

39 Informática III-2007Ing. Estela D'Agostino39 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. Cliente - Servidor

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

41 Informática III-2007Ing. Estela D'Agostino41 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. Cliente - Servidor

42 Servidor Abrir canal de comunicación ServerSocket ref 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() Cerrar canal de comunicación ref.close() Abrir canal de comunicación Socket ref Conectar con servidor ref=new(host,port) Envio y recepción de datos hijo read() | write() Cerrar canal de comunicación ref.close() Cliente

43 Informática III-2007Ing. Estela D'Agostino43 Consideraciones 1. El servidor debe estar en ejecucion antes de que los clientes intenten conectarse. 2. 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. 3. El servidor creara un socket para el cliente, durante su tiempo de vida no se puede asignar a otros clientes.

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

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

46 Informática III-2007Ing. Estela D'Agostino46 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.

47 Informática III-2007Ing. Estela D'Agostino47 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

48 Informática III-2007Ing. Estela D'Agostino48 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 ( ) Java.net.Socket

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

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

51 Informática III-2007Ing. Estela D'Agostino51 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 ); } Implementación servidor

52 Informática III-2007Ing. Estela D'Agostino52 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 ); }

53 Informática III-2007Ing. Estela D'Agostino53 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 ); }

54 Informática III-2007Ing. Estela D'Agostino54 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.*

55 Informática III-2007Ing. Estela D'Agostino55 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.

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

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

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

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

60 Informática III-2007Ing. Estela D'Agostino60 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 Paquete java.nio

61 Informática III-2007Ing. Estela D'Agostino61 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

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

63 Informática III-2007Ing. Estela D'Agostino63 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. Paquete java.nio

64 Informática III-2007Ing. Estela D'Agostino64 Paquete java.nio Stream trabaja bytesCanal trabaja buffer

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


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

Presentaciones similares


Anuncios Google