ELO-330: Programación de Sistemas
Tarea 4: Mi Chat Con Interfaz Java

Nombre: mcs: Mi Chat Server, Servidor chat basado en hilos
                 mccj: Mi Chat Client Java, cliente chat basado en hilos con interfaz JAVA

Sintaxis: mcs [puerto]
puerto: es opcional; si no se pone, el sistema lo asigna.

                mccj <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. Usted puede usar el mismo o una versión mejorada del pedido en tarea 3. 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 vía consola.
    mccj es el cliente a correr por cada usuario para vincularse con sus pares. Al ejecutar mccj, éste pregunta al usuario su "user name" vía una ventana. Luego presenta una interfaz con dos áreas. En un campo de texto no editable superior con barra de scroll, mccj muestra todos los mensajes recibidos antecedidos por el "user name" dado por ese usuario. En un campo de texto inferior editable, mccj permite el ingreso de mensajes por parte del usuario.
  Un cliente mccj concluye cuando el usuario presiona el botón "Salir". Esta situación no debe crear problemas en el servidor, los demás usuarios siguen en su chateo.

Observaciones
  mcs debe 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.