ELO-330: Programación de Sistemas
Tarea 3: Mi Chat
Nombre: mcs: Mi Chat Server, Servidor chat basado en
hilos
mcc: Mi Chat Client, cliente chat basado en hilos o no
Sintaxis: mcs [puerto]
puerto: es opcional; si no se pone, el sistema asignará.
mcc [máquina servidora] [puerto]
máquina servidora: Máquina donde corre mcs
puerto: puerto asociado al servicio mcs.
Descripción
mcs es el servidor chat que correrá
centralizadamente para atender este sistema simple de chat. Una vez
ejecutado, reportará por consola el número de puerto
donde recibirá los requerimientos. mcs hace uso de protocolo
TCP. Para terminar mcs se debe enviar Control-C o una señal de
término.
mcc es el cliente a correr por cada usuario para
vincularse con sus pares. Al ejecutar mcc, éste se conecta al
servidor y envía el "user name" de quien lo corre. Luego
envía por la conexión cada línea que el usuario
ingrese por teclado. En respuesta, el usuario recibe cada línea
precedida por "user name:" y luego el texto de la línea
ingresada. Notar que cada cliente mcc envía una línea por
vez, pero recibe las líneas de todos los otros usuarios
conectados al servidor.
Un cliente mcc concluye cuando el usuario presiona Control-C.
Esta situación no debe crear problemas en el servidor, los
demás usuarios siguen en su chateo.
Observaciones
No se preocupe por el traslape de texto que usted
está imprimiendo con aquel que usted recibe de los demás.
Sí debe preocuparse porque dos líneas texto de usuarios
no se traslapen entre si al mostrarse.
mcs puede estar implementado con hilos. Un hilo para atender
cada conexión de cliente. Además puede manejar una cola
donde cada hilo receptor puede escribir los mensajes recibidos, para
luego ser leídos por otro hilo que lee desde esta cola y los
envía a cada cliente. Usted puede optar por otras arquitecturas.
Ver llamado getpwuid (o getlogin no tan bueno).