informática iii-2007ing. estela d'agostino1 entrada/salida entrada/salida desde o hacia un...

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

Upload: teodulo-salvas

Post on 16-Apr-2015

35 views

Category:

Documents


3 download

TRANSCRIPT

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

Informática III-2007

Ing. Estela D'Agostino 1

ENTRADA/SALIDA

ENTRADA/SALIDA DESDE O HACIA UN PROCESO

ENTRADA/SALIDA ENTRE PROCESOS

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

Informática III-2007

Ing. Estela D'Agostino 2

ENTRADA /SALIDA

FUENTE PROGRAMA

stream

leer

•Para obtener información:

FUENTE: archivo, dispositivo entrada, socket.

información

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

Informática III-2007

Ing. Estela D'Agostino 3

ENTRADA /SALIDA

DESTINOPROGRAMA

stream

escribe

•Para escribir información:

DESTINO: archivo, dispositivo salida, socket.

información

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

Informática III-2007

Ing. Estela D'Agostino 4

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

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

Informática III-2007

Ing. Estela D'Agostino 5

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

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

Informática III-2007

Ing. Estela D'Agostino 6

Leer abrir un stream mientras haya información leer información cerrar el streamEscribir abrir el stream mientras haya información escribir información cerrar el stream

ENTRADA /SALIDA

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

Informática III-2007

Ing. Estela D'Agostino 7

Java tiene acceso a la entrada/ salida estándar a través dela clase java. lang. System

Los flujos estándar son campos estáticos de SystemSystem. in implementa la entrada estándarSystem. out implementa la salida estándarSystem. err implementa la salida de error

ENTRADA /SALIDA (INF. II)

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

Informática III-2007

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 )

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

Informática III-2007

Ing. Estela D'Agostino 9

Flujos de bytes

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

Informática III-2007

Ing. Estela D'Agostino 10

Flujos de caracteres

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

Informática III-2007

Ing. Estela D'Agostino 11

Combinación de flujos

•Los flujos se pueden combinar para obtener la funcionalidad deseada

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

Informática III-2007

Ing. Estela D'Agostino 12

Tipo de acceso

Acceso Secuencial Directo o aleatorio -

( RandomAccessFile )

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

Informática III-2007

Ing. Estela D'Agostino 13

Flujos principales

InputStreamReader Lee bytes de un flujo InputStream y los

convierte en caracteres Unicode

Métodos de utilidadread () lee un único caracter ready() indica cuando está listo el flujo para

lectura

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

Informática III-2007

Ing. Estela D'Agostino 14

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

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

Informática III-2007

Ing. Estela D'Agostino 15

Entrada/Salida desde archivos dentro de un mismo proceso

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

Informática III-2007

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()

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

Informática III-2007

Ing. Estela D'Agostino 17

FileWriter Util para escribir archivos de texto

Constructores FileWriter( String nombrearchivo) -- reescribe FileWriter( String nombrearchivo, boolean

añadirFinal) -- añade

Archivos de texto

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

Informática III-2007

Ing. Estela D'Agostino 18

Archivos

Clase FileConstructores File( String ruta) File( String ruta, String nombre) File( File directorio, String nombre)

Constructores de otras clases FileReader( File archivo) FileWriter( File archivo)

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

Informática III-2007

Ing. Estela D'Agostino 19

Métodos

canRead() comprueba si el archivo se puede leercanWrite() comprueba siel archivo se puede escribirdelete() borra dicho archivogetPath() devuelve la ruta del archivomkdir() crea un directorio con la ruta del objeto que lo recibeisDirectory() comprueba si dicho archivo es un directorio

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

Informática III-2007

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();

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

Informática III-2007

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

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

Informática III-2007

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

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

Informática III-2007

Ing. Estela D'Agostino 23

•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 IOExceptionprivate void readObject (java. io. ObjectInputStream

entrada)throws IOException, ClassNotFoundException;

Interfaz de serialización

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

Informática III-2007

Ing. Estela D'Agostino 24

Entrada/Salida entre procesos

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

Informática III-2007

Ing. Estela D'Agostino 25

Comunicación Entre Procesos

Comunicación entre procesos

Maquinas en red

Cliente - Servidor

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

Informática III-2007

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.

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

Informática III-2007

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.

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

Informática III-2007

Ing. Estela D'Agostino 28

Cliente - Servidor

Proceso Servidor

Proceso Cliente

Conexión

Sockets

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

Informática III-2007

Ing. Estela D'Agostino 29

Cliente - Servidor

Proceso Servidor

Proceso Cliente

red

Proceso Servidor

Proceso Cliente

Proceso Cliente

Proceso Cliente

Proceso Cliente

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

Informática III-2007

Ing. Estela D'Agostino 30

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

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

Informática III-2007

Ing. Estela D'Agostino 31

Aplicaciones cliente/servidor

El programa servidor permanece escuchando a los clientes.El programa cliente solicita servicios al servidor.

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

Informática III-2007

Ing. Estela D'Agostino 32

Paquete java.netJava 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

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

Informática III-2007

Ing. Estela D'Agostino 33

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

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

Informática III-2007

Ing. Estela D'Agostino 34

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

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

Informática III-2007

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.

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

Informática III-2007

Ing. Estela D'Agostino 36

ServidorEl 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

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

Informática III-2007

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.

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

Informática III-2007

Ing. Estela D'Agostino 38

ServidorEl servidor se ejecuta y publica en que

número de puerto ofrece el servicio.Espera por petición de algún cliente.

Cliente - Servidor

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

Informática III-2007

Ing. Estela D'Agostino 39

ClienteConoce 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

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

Informática III-2007

Ing. Estela D'Agostino 40

Cliente - Servidor

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

Informática III-2007

Ing. Estela D'Agostino 41

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

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

ServidorAbrir canal de comunicación

ServerSocket refPublicar la direcc. del canal

ref = new (Puerto)

Espera recibir solicitudesWhile, for o do

Esperar peticionesref.accept()

Crear proceso hijohijo = ref.accept()

Envio y recepción de datoshijo 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 datoshijo read() | write()

Cerrar canal de comunicación

ref.close()

Cliente

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

Informática III-2007

Ing. Estela D'Agostino 43

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.

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

Informática III-2007

Ing. Estela D'Agostino 44

4. Se establece la conexión entre el socket del cliente y el del servidor y pueden intercambiar datos.

Consideraciones

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

Informática III-2007

Ing. Estela D'Agostino 45

El paquete java.net

Proporciona una interfaz orientada a objetos para trabajar con sockets

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

Informática III-2007

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.

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

Informática III-2007

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

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

Informática III-2007

Ing. Estela D'Agostino 48

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

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

Informática III-2007

Ing. Estela D'Agostino 49

Implementación cliente

Socket miCliente; try { miCliente = new Socket(

"maquina",numeroPuerto ); } catch( IOException e ) { System.out.println( e ); }

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

Informática III-2007

Ing. Estela D'Agostino 50

Socket miServicio; try { miServicio = new

ServerSocket( numeroPuerto ); } catch( IOException e ) { System.out.println( e ); }

Implementación servidor

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

Informática III-2007

Ing. Estela D'Agostino 51

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

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

Informática III-2007

Ing. Estela D'Agostino 52

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 ); }

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

Informática III-2007

Ing. Estela D'Agostino 53

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 ); }

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

Informática III-2007

Ing. Estela D'Agostino 54

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.*

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

Informática III-2007

Ing. Estela D'Agostino 55

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.

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

Informática III-2007

Ing. Estela D'Agostino 56

Paquete java.nio

Agrega nuevas funcionalidades: Buffers Channels

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

Informática III-2007

Ing. Estela D'Agostino 57

Conexión disco-SO-aplicación

Controlador disco

Disco

hardware

Proceso

buffer

buffer

DMAread()

user space

kernel space

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

Informática III-2007

Ing. Estela D'Agostino 58

Paquete java.nio

Cambia el enfoque de trabajo

Java.iobytes

más lento

Java.nio bloques menos elegante.más rápido.similar a como lo hace el SO.

caracteres

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

Informática III-2007

Ing. Estela D'Agostino 59

JDK 1.4. java.io.*

java.nio. * se integraron bien.

Paquete java.nio

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

Informática III-2007

Ing. Estela D'Agostino 60

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

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

Informática III-2007

Ing. Estela D'Agostino 61

BufferPosició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

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

Informática III-2007

Ing. Estela D'Agostino 62

Buffer

Posición

Posición

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

Informática III-2007

Ing. Estela D'Agostino 63

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

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

Informática III-2007

Ing. Estela D'Agostino 64

Paquete java.nio

Streamtrabaja

bytes

Canaltrabaja

buffer

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

Informática III-2007

Ing. Estela D'Agostino 65

El paquete java.io y java.net para la version java 1.4 cambia un poco para poder trabajar con canales.

Paquete java.nio