En esta sección: Diagrama de Bloques Resumido, Funcionamiento del programa, Instrucciones paso a paso.
Diagrama de bloques resumido
El diagrama muestra cómo está compuesto el programa básicamente. Se tiene una Interfaz Gráfica, en el centro, dos clases encargadas de las conexiones, cliente y servidor, un área de texto (panel de texto, específicamente) y una clase intermedia (interna) que se encarga de enviar los datos desde el área editable a la clase de conexión, que envía la información al servidor.
Clases principales
1) Interfaz Gráfica: TextEditorGUI
Clase encargada de proveer un JFrame con una zona de edición de texto, además de botones que permiten iniciar una conexión de trabajo colaborativo.
2) Hebra de Servidor: MyServerThread
Clase encargada de aceptar las conexiones de clientes. A cada cliente le asigna un socket para los flujos de entrada y salida de datos, y una hebra (clase anónima) que se encarga de recibir los datos de este cliente.
3) Hebra de Cliente: MyClientThread
Clase encargada del envío y recepción de los caracteres escritos en la zona de edición de texto. Cada vez que un caracter es añadido o borrado de la zona de texto, la información es enviada al servidor, el cual la envía a los otros clientes. Los caracteres son enviados y recibidos uno a uno.
Manual de uso
Servidor
1. Se inicia la aplicación. Está "No conectado", y se puede editar y guardar el texto localmente.
2. Lo primero para trabajar en grupo, es iniciar un servidor. Ir a la barra de menú y apretar "Conexión".
3. Luego de apretar Conexión -> Servidor, aparece un cuadro de opciones. Se escoge el puerto por donde escuchar, el número máximo de conexiones a aceptar y se presiona "Aceptar".
4. El estado cambia a "SERVER" y debería aparecer un mensaje de conexión exitosa.
Con esto se tiene un servidor. El Área de texto pasa a ser "No Editable", se crea una Hebra de Servidor y está listo para aceptar conexiones por el puerto indicado.
Cliente
5. En otra máquina (o en la misma si se desea), se inicia la aplicación para conectarse como cliente. Ir a Conexión->Cliente para unirse al trabajo grupal.
6. Aparece un cuadro de opciones para elegir: dirección o nombre de la máquina del servidor, puerto por donde escucha éste y el nombre de usuario por el que se desea ser identificado.
Al apretar aceptar, se crea la Hebra de Cliente y se realiza un intercambio de información: el cliente envía su username y el servidor responde con un ID con el que identifica al cliente. A continuación, se recibe el texto compartido. Este reemplaza todo lo que haya en ese momento dentro del área de texto.
7. Ahora el estado es "CLIENT" y todo lo que hay en el área de texto es reemplazado por la información compartida. En el Listado de Participantes, aparece el nombre de usuario escogido, además de todas las futuras conexiones de clientes.
Con esto terminan las preparaciones y se puede comenzar a editar el trabajo. Todo lo que se escriba se envía carater a caracter, inmediatamente después de haber sido ingresado y todo lo ingresado por otros es recibido de la misma forma.
También puede que se reciban instrucciones del servidor, que indican, por ejemplo, la desconexión de clientes, para actualizar el listado de participantes.
8. El color que envuelve al nombre de usuario es el asignado para identificar o distinguir el texto de cada cliente. En el servidor, se puede distinguir lo escrito por cada conexión, lo que permite decidir, en caso que fuera necesario, si se desconecta a un cliente.
El servidor tiene la opción de hacer click sobre un nombre de usuario para desconectarlo inmediatamente.