UTFSM - ELO_330 - TAREA N° 4.

Carlos Silva Lütty, Andrés Cerón Corrales

csl (at) ELO UTFSM CL, aceron (at) ELO UTFSM CL

Nombre: ChatServer: Servidor de Chat.

Sintaxis: ChatServer <puerto_listen>

                ChatServer

                por defecto puerto: 12468

Descripción
ChatServer es un programa que permite ejecutar un Servidor de Chat TCP. Para ello ChatServer hace uso de ServerSocket, Vector, Socket, Integer, BufferedReader, Thread, DataInputStream, DataOutputStream, Enumeration, synchronized, String

Import

java.net java.io java.util.

Files

ChatServer.java, ChatHandler.java


Nombre: ChatClient: Cliente de Chat.

Sintaxis: ChatClient <user> <host> <port_server>

                ChatClient <user> <port_server>

                ChatClient <user>

                por defecto puerto: 12468

                                      host: localhost (127.0.0.1)

Descripción
ChatClient es un programa que permite ejecutar un Cliente visual de Chat TCP. Para ello ChatClient hace uso de PrintWriter, Socket, Integer, JFrame, Thread, DataInputStream, DataOutputStream, TextField, JEditorPane, JTextArea, JSplitPane.html, JPanel, JButton, JScrollPane, JOptionPane, File, RandomAccessFile, JLabel, Container, JMenuBar, JMenu, JMenuItem, System, Color, ActionListener, ActionEvent, AudioFileFormat, AudioInputStream, AudioFormat, DataLine.Info, ColorChooser, FileChosser, Sound (paquete)

Import

java.net java.io java.util, java.awt, java.awt.event, javax.swing, javax.sound.sampled

Files

ChatClient.java, ChatViewer.java, ding.wav, Ring.wav


SOLUCIÓN       para descomprimir:     tar -jxvf chat.tar.bz2


JAVADOC del proyecto

README.txt

En este archivo se incluye una descripción de la labor de cada archivo y su función como bloque del diseño de la solución.

Presione sobre el nombre del archivo para ver su contenido.  build.sh  chat.png

Material de apoyo:

google

índice visual de componentes de Swing

Manuales JavaDoc en Aragorn

Algunas Virtudes y su Explicación:

Capacidad para elegir color del texto en el cliente y desplegar los colores en la ventana de diálogo.

Cada cliente crea un archivo de texto al conectarse y lo escribe con formato html. Este archivo es eliminado al cerrar el cliente. La clase JEditorPane maneja archivos con formato. La clase JColorChooser permite agregar una paleta para seleccionar colores. Al enviar el texto se guarda el color como string y se envía junto al mensaje. Al resivir mensajes, se recupera el color y luego se escribe con formato en el archivo creado. Luego se lee el archivo y se despliega en la ventana de diálogo.

----------------------------------

Capacidad para reproducir sonidos de alerta.

El cliente incluye 2 sonidos. Uno es reproducido cada vez que alguien ingresa al chat y el otro cuando alguien lo abandona. El paquete Sound.Sampled incluye clases necesarias para manejar sonido.

----------------------------------

Capacidad para desplegar la lista de usuarios en línea.

Se agrega capacidad de reconocer encabezados en los mensajes. "->" indica el usuario que viene llegando al salón. "<-" indica el usuario que abandona el chat. Se agrega al cliente visual un JTextArea donde se escribe un String con todos los usuarios que están on-line en ese momento. El archivo es actualizado en todos los clientes cada vez que se produce un evento de conexión (ingreso o salida de un cliente).


Bugs, aclaración y sugerencia:

Actualización de lista de usuarios on-line.

El último cliente en conectarse no recibe la lista actualizada de usuarios on-line. Se estudió el problema pensando que tenía que ver con la lista de usuarios en el distribuidor (ChatHandler.java) de mensajes, pero no se resolvió el problema.

Esto ocurre sólo en algunos casos, es por esto que no se detectó la avería.

Se propone revisar el tutorial para manejar listas y ver la documentación de la Clase JList.