===================================================================================
"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.