Tarea 2: charla
|
Alumno: |
Gabriel Astudillo Muñoz |
|
Rol: |
9321051-4 |
La idea de esta aplicación es implementar una pequeña
parte de una aplicación tipo "chat", utilizando para ello los conceptos
sobre comunicación con sockets y la utilización de la API
de C para ese fin.
Descripción de la aplicación.
La aplicación consta de dos partes bien definidas. Una de
ellas es el Servidor, el cual se encarga de atender a los clientes que
se conectan y de efectuar el envio de mensajes entre ellos.
El cliente, por otra parte, es el que interactúa directamente
con el usuario. Su función es permitir el ingreso de datos por parte
del usuario, enviarlos al servidor y mostrar los mensajes que envie este
último.
Diagramas de alto nivel para esta aplicación.
Explicación:
-
Servidor: El proceso servidor atiende el mismo los mensajes de los clientes,
así como el intercambio de mensaje entre clientes. Este programa
es monohilo y utiliza el paradiga ...FALTA.
-
Clientes: Los clientes, aunque envían y reciben datos hacia y desde
el servidor, son un poco más complejos, ya que no son simples procesos,
sino varios que permiten una interaación adecuanda con el usuario
final. Un cliente es básicamente lo que se muestra a continuación:
Como se puede observar, el cliente consta de tres procesos, denominados
P1, P2, P3.
-
P1: Permite la interacción entre el usuario final y la aplicación,
que la ve como un todo. Este proceso se encarga de tomar los datos del
cliente, y enviarlos al servidor.
-
P2: Este proceso, por su parte, se limita a escuchar los mensajes provenientes
del servidor. Los mensajes recibidos, son enviados a P3.
-
P3: Por ultimo, este proceso toma los datos enviados por P2 y los muestra
en pantalla.
¿Por qué se utilizó esta solución? Al parecer,
P3 está sobrando, ya que P2 perfectamente podría desplegar
los datos a pantalla. El problema es que los datos se deben mostrar en
otra ventana, y ahí entra el proceso P3. Además, como P3
es una xterm, la comunicación con P2 no puede realizarse por pipes,
ya que no hay un relación padre-hijo, por lo que se comunican por
medio de fifos.
Notas para la compilación:
Para compilar, es necesario estar en el directorio raiz de la tarea
y ejecutar make. Esto creara un direcctio bin/ , dentro
del cual estarán los binarios de la tarea charla_srv para el
servidor y charla para el cliente. Además existe un tercer
ejecutable, que lo utiliza internamente el cliente.
Todos los programas fueron hechos y compilados bajo Linux 2.2.5-15.
Detalles de las erramientos utilizadas para esta tarea:
-
GNU Make version 3.77 (make)
-
egcs-2.91.66 (gcc)
-
kwrite 0.98
|
Gabriel Astudillo Muñoz
9321051-4 |