Prctica 3 EntradaSalida y Manejo de excepciones - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

Prctica 3 EntradaSalida y Manejo de excepciones

Description:

Un router es un dispositivo con conexiones a otros dispositivos a trav s de ... Todas las clases pertenecer n al package lprg.p3 ... – PowerPoint PPT presentation

Number of Views:31
Avg rating:3.0/5.0
Slides: 27
Provided by: josa1
Category:

less

Transcript and Presenter's Notes

Title: Prctica 3 EntradaSalida y Manejo de excepciones


1
Práctica 3Entrada/Salida y Manejo de excepciones
  • Dpto. de Ingeniería de Sistemas Telemáticos
  • http//www.lab.dit.upm.es/lprg/

Abril 2004
2
Objetivos
  • Se cubren los siguientes aspectos
  • Lectura de un fichero de entrada
  • Manejo de excepciones
  • Escenario
  • Configuración de un router

3
Internet red de redes
A
R2
Estaciones de usuario (PC)
R1
R3
Servidores
R4
R5
Router
Conexión entre dispositivos, a través de una red
B
Camino que va siguiendo el tráfico de la
comunicación del PC A al servidor B (ruta)
4
Router
  • 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)

5
Dirección IP
  • 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 28 valores, entre 0 y 255
  • Notación
  • Notación decimal 138.4.54 4
  • Notación binaria 1111 1111 0000 0100 0111 0110
    0000 0100

6
Dirección de Red
  • 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. 255.255.255.0
  • Por tanto, una dirección de red queda definida
    mediante
  • dirección IP, máscara de red

Ej. Red de área local con un router y varios
servidores 138.4.54.0 / 255.255.255.0
138.4.54.1
138.4.54.2
138.4.54.3
138.4.54.x
7
Interfaz
  • Una interfaz, se identificará por
  • un nombre, de uso interno en el dispositivo (ej,
    ce0)
  • una Dirección IP (ej, 138.4.54.4)
  • 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, 138.4.54.4)
  • una Máscara de Red (ej, 255.255.255.0)
  • Por tanto, una interfaz queda definida mediante
  • nombre, dirección IP, máscara de red

ce0
138.4.54.4 / 255.255.255.0
8
Rutas
  • 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)

9
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
Fichero de configuración
  • // nombre del router
  • device name "my router"
  • // definición de interfaces
  • interface add ce0 "192.168.0.3" "255.255.0.0"
  • interface add ce1 "10.0.0.5" "255.0.0.0"
  • interface add ce2 "138.4.54.4" "255.255.255.0"
  • // definición de rutas
  • route add "11.0.0.0" "255.0.0.0" "10.0.0.1"
  • route add "212.166.250.0" "255.255.0.0"
    "192.168.0.1"
  • route add "138.4.63.0" "255.255.255.0"
    "138.4.54.1"

11
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
Diagrama de Clases
13
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
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
StreamTokenizer
  • 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)

16
Método nextTokende 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
Ejemplo trivial
// _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)
  • device
  • name
  • my router
  • interface
  • add
  • ce0
  • 192.168.0.3
  • 255.255.0.0
  • interface
  • Add
  • ce1
  • 10.0.0.5
  • 255.0.0.0
  • interface
  • add
  • ce2
  • 138.4.54.4
  • 255.255.255.0
  • route

11.0.0.0 255.0.0.0 10.0.0.1 route add 212.166.250.
0 25.255.0.0 192.168.0.1 route add 138.4.63.0 255.
255.255.0 138.4.54.1
18
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
Posible algoritmo de reconocimientomé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
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
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.filelogging.prope
    rties lprg.p3.ConfigRouterTest

22
Logging Ejemplos
  • 11-abr-2004 234217 lprg.p3.ConfigRouter getWord
  • INFO Entrada
  • 11-abr-2004 234217 lprg.p3.ConfigRouter getWord
  • FINA token leído device
  • 11-abr-2004 234217 lprg.p3.ConfigRouter getWord
  • INFO Entrada
  • 11-abr-2004 234217 lprg.p3.ConfigRouter getWord
  • FINA token leído name
  • ....
  • 11-abr-2004 234640 lprg.p3.ConfigRouter getWord
  • INFO Entrada
  • 11-abr-2004 234640 lprg.p3.ConfigRouter getWord
  • FINA token leído 1192.168.0.3
  • 11-abr-2004 234640 lprg.p3.ConfigRouter
    getDireccionIP
  • GRAVE Lanzada ConfigRouterException

23
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.con
    fig.filelogging.properties lprg\p3\Device.txt
  • 138.4.54.38 -gt ce2 138.4.54.4/255.255.255.0
  • 10.0.3.0 -gt ce1 10.0.0.5/255.0.0.0
  • 192.168.0.1 -gt ce0 192.168.0.3/255.255.0.0
  • 192.160.0.1 -gt null
  • device name my router"
  • interface add ce0 "192.168.0.3" "255.255.0.0"
  • interface add ce1 "10.0.0.5" "255.0.0.0"
  • interface add ce2 "138.4.54.4" "255.255.255.0"
  • route add "11.0.0.0" "255.0.0.0" "10.0.0.1"
  • route add "212.166.250.0" "25.255.0.0"
    "192.168.0.1"
  • route add "138.4.63.0" "255.255.255.0"
    "138.4.54.1"
  • Introduzca direcciones IP para averiguar la ruta
  • 138.4.54.1 -gt ce2 138.4.54.4/255.255.255.0
  • 212.166.250.21 -gt ce0 192.168.0.3/255.255.0.0

24
Excepcionesen 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
Pruebas enConfigRouterTest.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(ltnomficherogt)
  • BufferedWriter salida new
    BufferedWriter(fw)
  • salida.write(ltStringgt)
  • salida.write (ltStringgt)
  • ...
  • salida.close()

26
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, 2359
Write a Comment
User Comments (0)
About PowerShow.com