===================================================================================
                    "TAREA 3"                                        
             PROGRAMACIÓN DE SISTEMAS                               
                                                                               
            Nombre    : Christian Pelissier Quiñones                     
            Rol    : 9821013-K                                      
           Fecha    : 18-10-2002                                     
===================================================================================
 
EXPLICACION FUNCIONAL:

   Cabe destacar que los programas gateway local y gateway remoto no se diferncian mayormete en
  su codigo por ello se analizaran de igual manera. la diferencia cion se produce debido a las
  dos maneras con que fue abordada la solucion al problema.

   A continuacion se presenta una idea general de lo que es el funcionamiento de los programas:
   En primer lugar se comprueba que se le pase el argumento requerido para funcionar sea este
  numero de puerto o nombre de host dependiendo del programa a ajecutar (gateway local o
  gateway remoto)

   Luego se procede a capturar los datos de la maquina en la cual se esta corriendo el programa
  para asi construir el socket por el cual el gateway va recibir y enviar la inforacion a la
  maquina remota. Una vez obtenidos estos se procede a recopilar la informacion del servidor X
  y poder costruir el socket para enviar y recibir la informacion proveniente del servidor X.

   Una vez efectuado lo anterior procede a esperar por conecciones.

   En esta parte donde se produce la diferenciacion entre la solucion que utiliza la funcion select
  y la que utiliza hilos.

   Para la funcion select se tiene:
   Se monitorea para letura el socket utilizado para leer desde la maquina remota, cuando desde
  esta se envian datos se procede a hacer el acept del socket que viene de la maquina remota y luego
  el connect al servidor X, con lo anterior se aprovecha de obtener los datos de la maquina remota.
   Luego se procede a monitoriar los descriptores para lectura, al detectar atividad por uno de estos
  llama a la funcion EchoServe la cual es encargada de leer de un socket a un bufer y de este escribir
  en otro socket. La direccion en que se efectua esto depende mucho de la aplicacion que se esta ejecutando
  pues el trafico X es altamente asincronico.

Para la solucion con hilos se tiene:
   Cuando desde la maquina remota se envian datos hacia el gateway se procede a hacer el acept del socket
  que viene de la maquina remota y luego el connect al servidor X, con lo anterior se aprovecha de obtener
  los datos de la maquina remota.
   Luego se crea un hilo el cual sera encargado de leer el socket que viene desde la maquina remota y escribir
  lo leido en el socket hacia el servidor X, junto con esto este crea otro hilo el cual se encargara de hacer
  el proceso inverso, es decir leer desde el socket del servidor X y escribir en el socket de la maquina remota.


ESQUEMATICO DEL GATEWAY  REMOTO

gxrmono.jpg



ESQUEMATICO DEL GATEWAY  LOCAL

monogxl.jpg