21
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 75.300 1 de 1

Trabajo Práctico Final Seminario de Ingeniería en ...web.fi.uba.ar/~dmontal/micq/design/micq.pdf · conectados en red, o a Internet puedan enviar un mensaje de logueo al servidor,

Embed Size (px)

Citation preview

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 75.300

1 de 1

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) micq

Receptor

11 de 11

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) micq ClassServidor

13 de 13

Seminario de Ingeniería en Informática I (75.35) micq Cliente

14 de 14

Seminario de Ingeniería en Informática I (75.35) micq

PantallaInterface

15 de 15

Seminario de Ingeniería en Informática I (75.35) micq

Pantalla

16 de 16

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