La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Laboratorio de Programación Práctica 3 Entrada/Salida y Manejo de excepciones Dpto. de Ingeniería de Sistemas Telemáticos

Presentaciones similares


Presentación del tema: "Laboratorio de Programación Práctica 3 Entrada/Salida y Manejo de excepciones Dpto. de Ingeniería de Sistemas Telemáticos"— Transcripción de la presentación:

1 Laboratorio de Programación Práctica 3 Entrada/Salida y Manejo de excepciones Dpto. de Ingeniería de Sistemas Telemáticos Abril 2004

2 Práctica 32 Objetivos Se cubren los siguientes aspectos Lectura de un fichero de entrada Manejo de excepciones Escenario Configuración de un router

3 Abril 2004Práctica 33 Internet: red de redes Estaciones de usuario (PC) Servidores Router A B Camino que va siguiendo el tráfico de la comunicación del PC A al servidor B (ruta) Conexión entre dispositivos, a través de una red R1 R2 R3 R4 R5

4 Abril 2004Práctica 34 Un router es un dispositivo con conexiones a otros dispositivos a través de redes y que actúa como encaminador de tráfico. Cada conexión se realiza a través de una interfaz, que es el punto de comunicación entre un dispositivo y el exterior. Para encaminar el tráfico es necesario conocer las rutas hacia los posibles destinos no la ruta completa, sólo el gateway o siguiente salto. (R1 sólo necesita saber que para encaminar el tráfico dirigido hacia B, hay que enviarlo a R2) Router

5 Abril 2004Práctica 35 En Internet, se necesita algo para identificar unívocamente las interfaces y redes. Para ello se utilizan las direcciones IP (Internet Protocol) Formada por 4 bytes Cada byte permite 2 8 valores, entre 0 y 255 Notación Notación decimal: Notación binaria: Dirección IP

6 Abril 2004Práctica 36 Una dirección de red identifica el conjunto de direcciones IP posibles de las interfaces conectadas en una red El procedimiento empleado es hacer que todas las direcciones IP de una red tengan una parte común: los primeros N bits Esa parte común se representa mediante una máscara de red La máscara de red se representa como una dirección IP, con los primeros N bits igual a 1 y el resto de bits 0, ej Por tanto, una dirección de red queda definida mediante: dirección IP, máscara de red Dirección de Red Ej. Red de área local con un router y varios servidores: / x

7 Abril 2004Práctica 37 Una interfaz, se identificará por: un nombre, de uso interno en el dispositivo (ej, ce0) una Dirección IP (ej, ) un identificador de la red a la que está conectada (dirección de la red) La dirección de red se genera a partir de: Dirección IP (ej, ) una Máscara de Red (ej, ) Por tanto, una interfaz queda definida mediante: nombre, dirección IP, máscara de red Interfaz / ce0

8 Abril 2004Práctica 38 Para encaminar el tráfico es necesario conocer las rutas hacia los posibles destinos Dos casos: Si el destino está en una de las redes a las que estoy conectado directamente, se lo envío directamente a través de esa red. Si el destino no está en una de las redes a las que estoy conectado directamente, se lo intentaré enviar indirectamente a través de otro router con el que sí tengo conexión directa. Un router guarda información sobre las rutas que conoce (tabla de encaminamiento). Cada ruta especifica: dirección de la red destino (= dirección IP + máscara) dirección IP del gateway (dispositivo al que tengo que reenviar el tráfico dirigido a cualquier dirección de esa red destino) Por tanto, una ruta queda definida mediante: dirección de red (destino), dirección IP (gateway) Rutas

9 Abril 2004Práctica 39 Parámetros de un Router Un router queda definido por: Su nombre Sus interfaces de red; cada interfaz queda definida por: Un nombre Una Dirección IP Una Máscara de red Su tabla de rutas; cada ruta queda definida por: Red destino (Dirección de Red) Gateway (Dir. IP)

10 Abril 2004Práctica 310 Fichero de configuración // nombre del router device name "my router" // definición de interfaces interface add ce0 " " " " interface add ce1 " " " " interface add ce2 " " " " // definición de rutas route add " " " " " " route add " " " " " " route add " " " " " "

11 Abril 2004Práctica 311 ¿Qué hay que hacer? Implementar una clase que lea un fichero de configuración de un router, como el anterior, y cree un router con dicha configuración

12 Abril 2004Práctica 312 Diagrama de Clases

13 Abril 2004Práctica 313 Clases Clases (y ficheros) proporcionados: Clase DireccionIP.java Clase DireccionIPException.java Clase DireccionRed.java Clase Interfaz.java Clase Ruta.java Clase Router.java Clase Configuracion.java Fichero de ejemplo de configuración: Device.txt Clase Entrega.java Clases pedidas: Clase ConfigRouterException.java Clase ConfigRouter.java Clase ConfigRouterTest.java

14 Abril 2004Práctica 314 Entrada/Salida para ConfigRouter Para leer el fichero java.io.File(nomfichero) java.io.FileReader(File) Para descomponer la entrada en tokens java.io.StreamTokenizer

15 Abril 2004Práctica 315 final char DELIMITADOR_WORD = ; fr = new FileReader (new File(fichero)); st = new StreamTokenizer(fr); // una secuencia de caracteres encerrada // entre dos caracteres DELIMITADOR_WORD es //vista como un solo token st.quoteChar(DELIMITADOR_WORD) // ignora comentarios del tipo // st.slashslashComments(true) // ignora comentarios del tipo /*...*/ st.slashStarComments(true) StreamTokenizer

16 Abril 2004Práctica 316 Método nextToken de StreamTokenizer El método nextToken() de StreamTokenizer puede devolver varios valores: TT_WORD: indica que el token es una palabra. TT_NUMBER: indica que el token es un número. TT_EOL: indica que se ha llegado al final de una línea. Para que esto funcione, debe haber sido invocado el método eolIsSignificant con el argumento true. TT_EOF: indica el final de la entrada.

17 Abril 2004Práctica 317 Ejemplo trivial device name my router interface add ce interface Add ce interface add ce route add route add route add // _st es un objeto de la clase StreamTokenizer for (int lexema = _st.nextToken(); lexema != StreamTokenizer.TT_EOF; lexema = _st.nextToken()) System.out.println (_st.sval);

18 Abril 2004Práctica 318 Palabras Clave Las palabras clave utilizadas en la definición de un router son las siguientes: device interfaz route Además, existen otras dos palabras clave, que representan operaciones: name add

19 Abril 2004Práctica 319 Posible algoritmo de reconocimiento: método configura Abrir fichero para lectura Crear StreamTokenizer Leer una primera línea que comience por device Si el siguiente token es name tratar de reconocer un nombre para el router Mientras haya tokens Si el primer token es interfaz Si el siguiente token es add Tratar de reconocer una definición de interfaz para el router Si el primer token es router Si el siguiente token es add Tratar de reconocer una definición de Ruta para el dispositivo Si en algún momento se llega a una situación no deseada (token incorrecto, fin de línea, etc.) se debe lanzar una Excepción: ConfigRouterException.

20 Abril 2004Práctica 320 Sugerencias Crear los siguientes métodos getWord, para leer una palabra (o secuencia de palabras entrecomilladas) getDireccionIP, para leer una dirección IP procesaNombre, para leer líneas que comiencen por device procesaInterfaz, para leer líneas que comiencen por interfaz procesaRuta, para leer líneas que comiencen por route

21 Abril 2004Práctica 321 Logging Se deberán incluir trazas en la implementación de la clase pedida ConfigRouter: se utilizará java.util.logging niveles de trazado: SEVERE : para fallos graves, como excepciones que no se pueden tratar; se indica la excepción que se lanza. INFO : para mostrar información de alto nivel: entrada y salida en los métodos. FINE : para mostrar información de bajo nivel, concretamente de los tokens que se van leyendo de la entrada. Se puede indicar en tiempo de ejecución dónde está el fichero de configuración para el paquete java.util.logging: java -Djava.util.logging.config.file=logging.properties lprg.p3.ConfigRouterTest

22 Abril 2004Práctica 322 Logging: Ejemplos 11-abr :42:17 lprg.p3.ConfigRouter getWord INFO: Entrada 11-abr :42:17 lprg.p3.ConfigRouter getWord FINA: token leído: device 11-abr :42:17 lprg.p3.ConfigRouter getWord INFO: Entrada 11-abr :42:17 lprg.p3.ConfigRouter getWord FINA: token leído: name abr :46:40 lprg.p3.ConfigRouter getWord INFO: Entrada 11-abr :46:40 lprg.p3.ConfigRouter getWord FINA: token leído: abr :46:40 lprg.p3.ConfigRouter getDireccionIP GRAVE: Lanzada ConfigRouterException

23 Abril 2004Práctica 323 Pruebas: Clase Configuracion.java Existe una clase Configuración.java que permite comprobar la funcionalidad del Router: Crea un router a partir de un fichero de configuración Calcula rutas para algunas direcciones IP predefinidas en el código Solicita direcciones IP por la entrada estándar y dice por qué interfaz deberá encaminarse el tráfico dirigido hacia esa dirección IP java lprg.p3.Configuracion –Djava.util.logging.config.file=logging.properties lprg\p3\Device.txt > ce2: / > ce1: / > ce0: / > null device name my router" interface add ce0 " " " " interface add ce1 " " " " interface add ce2 " " " " route add " " " " " " route add " " " " " " route add " " " " " " Introduzca direcciones IP para averiguar la ruta: > ce2: / > ce0: /

24 Abril 2004Práctica 324 Excepciones en ConfigRouter.java Deben lanzarse excepciones: IOException: si no se puede abrir el fichero porque no existe o no tenemos permisos ConfigRouterException: no se reconoce el tipo de elemento de una línea Tratamiento: IOException: no se pueden tratar, el programa debe terminar ConfigRouterException: tampoco se tratan, el programa termina DireccionIPException deben capturarse y propagarse en forma de RouterException Cada vez que se lance una Excepción se generará una línea de log con el nivel SEVERE

25 Abril 2004Práctica 325 Pruebas en ConfigRouterTest.java Se proporcionan algunas pruebas muy simples: Fichero vacío Fichero que no existe Deberá completarse con casos de prueba adicionales que permitan comprobar toda la funcionalidad de la clase ConfigRouter ¿Cómo escribir en un fichero? FileWriter fw = new FileWriter( ); BufferedWriter salida = new BufferedWriter(fw); salida.write( );... salida.close();

26 Abril 2004Práctica 326 Entrega Todas las clases pertenecerán al package lprg.p3 Se deberán dejar en el directorio lprg/p3 de su cuenta del laboratorio Se piden los ficheros ConfigRouter.java ConfigRouterException.java ConfigRouterTest.java Fecha límite: 30 de abril de 2004, 23:59


Descargar ppt "Laboratorio de Programación Práctica 3 Entrada/Salida y Manejo de excepciones Dpto. de Ingeniería de Sistemas Telemáticos"

Presentaciones similares


Anuncios Google