Download Trabajo Práctico Final Seminario de Ingeniería en Informática I 75.35

Document related concepts
no text concepts found
Transcript
MICQ
Facultad de Ingeniería, UBA. Junio 2002
Trabajo Práctico Final
Seminario de Ingeniería en Informática I
75.35
Cátedra: Pablo Cosso
Alumno:
Diego Fernando Montaldo
1 de 1
75.300
Seminario de Ingeniería en Informática I (75.35)
micq
Introducción
Este documento describe en forma general el funcionamiento del programa, que
técnicas se utilizaron para resolver el mismo, que herramientas para desarrollarlo, y describir su
funcionamiento y su modo de uso.
Objetivo
Este programa permite la comunicación entre distintos clientes “micq”, estando en la
misma o distintas máquinas que estén conectadas a través de una red o a la misma Internet.
La comunicación se basa en el intercambio de mensajes. Estos mensajes deben
implementar una interfaz, es decir se puede intercambiar cualquier objeto mensaje que
implemente la interfaz. Los mismos son recibidos y procesados por el receptor.
Alcance
Programa Servidor:
Programa que permite, que clientes micq ubicados en distintos lugares, pero
conectados en red, o a Internet puedan enviar un mensaje de logueo al
servidor, dejando así sus datos, y obtener del servidor la información de otros
clientes micq logueados anteriormente.
Permitiendo así reunir en un lugar la información de todos los clientes micq
que quieran comunicarse.
Dicho programa servidor informa a los clientes micq ya logueados la llegada o
partida de otro cliente micq.
Programa micq:
Programa que permite a los usuarios, loguearse al servidor, dejar sus datos y
obtener los datos de otros usuarios, para poder comunicarse.
Permite la elección de un usuario en particular al cual enviarle el mensaje, o
realizar un mensaje global a todos los usuarios logueados.
Técnicas
Se utilizó el lenguaje Java y el JDK de Sun para escribir el programa.
Requerimientos
Es necesario tener instalado el JDK de Sun para correr el programa servidor y los
programas micq (clientes).
2 de 2
Seminario de Ingeniería en Informática I (75.35)
micq
Síntesis de Resolución del Problema
Servidor:
El Servidor es una clase a la cual se le indica un puerto, el mismo será por
donde el servidor estará escuchando los mensajes de clientes.
Entonces el Servidor crea un socket en localhost y dicho puerto, y entra a un
loop infinito donde se bloquea esperando aceptar una conección en su socket.
Al aceptar una conección, toma el mensaje, lo procesa y guarda en un vector
la información del nombre del cliente, su IP, y el número de Puerto donde
estara escuchando para recibir mensajes.
A su vez recorre el vector y le informa a cada usuario en el vector la llegada
de un nuevo usuario (IP, nombre y Port).
También al recorrer el vector le informa al usuario recién llegado la existencia
de otros usuarios anteriores, con su nombre, IP y Port.
Luego vuelve al loop a continuar escuchando por nuevas conecciones.
No tiene interfaz grafica pero genera un archivo de log donde loguea los
eventos principales que van ocurriendo.
Cliente (programa micq):
El Cliente se ejecuta en una máquina, y se le indica que nombre, y puerto
utilizara para comunicarse.
Entonces el mismo, crea un thread generando dos procesos, uno que se
encargará de escuchar nuevos mensajes llegados a él (Parte Servidora) y otra
que se encargará de construir nuevos mensajes y enviarlos a otros usuarios
(Parte Cliente).
La parte Servidora entonces, creará un socket en su localhost, y puerto y
quedará en un loop esperando para aceptar conexiones con mensajes nuevos.
Los mismos pueden ser de varios tipos, entre ellos
1) De logueo, es decir un mensaje con información de un nuevo
usuario, su nombre, Ip y port.
2) De mensaje: es decir un texto enviado para ser leído.
3) De deslogueo, es decir informa que deja de utilizar el Programa
micq.
Esto se podría extender agregando mensajes que sean caritas o imágenes ya
predefinidas.
O hasta transferir archivos en formato MIME, (cadena de caracteres) y que el
cliente los vuelva a su formato.
Con tal que dichos mensajes implementen la interfaz interfazMensaje, con sus
métodos procesar() que procesarán el mensaje.
La parte Cliente, presenta una interfaz gráfica, podría utilizar cualquier interfaz
gráfica que implemente a PantallaInterfaz, permitiendo así generar distintas
interfaces mas cómodas o personalizadas.
Mediante dicha Interfaz gráfica, el usuario podrá generar los mensajes,
seleccionar los destinatarios y enviarlos, para ello volverá a instanciar a la clase
Emisora para que envíe el mensaje a el o los destinatarios seleccionados.
Creará un nuevo socket a dichos programas clientes de los usuarios, los cuales
tendrán a su Parte Servidora escuchando, les aceptarán la conexión, y
obtendrán el mensaje y lo procesarán.
También presenta una sección de configuración donde se puede ingresar los
datos de un servidor al cuál loguearse. La misma se guarda en un archivo plano
de configuración en la máquina del cliente.
3 de 3
Seminario de Ingeniería en Informática I (75.35)
micq
El servidor solo se utiliza para loguearse y recibir la información de otros
usuarios.
La comunicación luego es directa entre los clientes, evitando así la sobrecarga
del programa servidor, (que todas las comunicaciones pasen por él)
Si los usuarios ya saben el Ip y port donde escucha el programa micq de otro
usuario, no es necesario loguearse al servidor, se puede indicar el ip y port enviar el
mensaje directamente sin intervención ninguna del servidor (por casos en que el
servidor este caído).
4 de 4
Seminario de Ingeniería en Informática I (75.35)
micq
Uso y Ejecución
Servidor:
1) Se lanza primero el servidor
java micq.main.ClassServidor
Este escucha en el puerto 1505 del ip de la máquina
Clientes:
2) Se lanza uno o varios Clientes: java micq.main.Micq Apdod IP PORT
java micq.main.Micq Diego 192.168.2.31 1531
El cliente escucha en el 192.168.2.31 en el puerto 1531 (apodo Diego)
java micq.main.Micq Tobias 192.168.2.33 1533
El cliente escucha en el 192.168.2.33 en el puerto 1533 (apodo Tobias)
java micq.main.Micq Corvus 192.168.2.3 1503
El cliente escucha en el 192.168.2.3 en el puerto 1503 (apodo Corvus)
Puede usarse el programa micq directamente, es decir sin conectarse antes al servidor,
escribiendo el ip y el puerto y enviando el mensaje directamente a otro usuario a su programa
micq. De esta manera no se pasaba por el servidor para loguearse. Corre el riesgo de que el
otro usuario no tenga el programa micq abierto por lo que no podrá establecerse la
comunicación.
Sino lo que hay que hacer una vez abierto en el cliente es loguearse al servidor para informar
su ip . Para ello se debe primero configurar los datos del servidor en el menú en la opción
Configuración. Una vez guardados hay que loguearse, con la opción del menú Login.
Al hacer eso el servidor guarda sus datos en un vector y le informa a todos los demás que
acaba de llegar él y a él le informa los datos todos los clientes que ya estaban.
Y ya se estaría listo para enviar mensajes a uno o a todos, seleccionándose del combo de
usuarios logueados.
5 de 5
Seminario de Ingeniería en Informática I (75.35)
micq
Interface Mensaje
6 de 6
Seminario de Ingeniería en Informática I (75.35)
micq
Mensaje Logueo
7 de 7
Seminario de Ingeniería en Informática I (75.35)
micq
Mensaje Deslogueo
8 de 8
Seminario de Ingeniería en Informática I (75.35)
micq
Mensaje Texto
9 de 9
Seminario de Ingeniería en Informática I (75.35)
micq
Emisor
10 de 10
Seminario de Ingeniería en Informática I (75.35)
Receptor
11 de 11
micq
Seminario de Ingeniería en Informática I (75.35)
micq
Servidor
12 de 12
Seminario de Ingeniería en Informática I (75.35)
ClassServidor
13 de 13
micq
Seminario de Ingeniería en Informática I (75.35)
Cliente
14 de 14
micq
Seminario de Ingeniería en Informática I (75.35)
PantallaInterface
15 de 15
micq
Seminario de Ingeniería en Informática I (75.35)
Pantalla
16 de 16
micq
Seminario de Ingeniería en Informática I (75.35)
micq
MicqConfiguration
17 de 17
Seminario de Ingeniería en Informática I (75.35)
micq
18 de 18
Seminario de Ingeniería en Informática I (75.35)
micq
19 de 19
Seminario de Ingeniería en Informática I (75.35)
micq
Micq
20 de 20
Seminario de Ingeniería en Informática I (75.35)
micq
ExceptionLog
21 de 21