SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
Escuela Politécnica Nacional
                                                                 Programación Orientada a Objetos
                                                                               Crea un chat en JAVA


Tema: Servicio de mensajería tipo chat desarrollado en Java y utilizando NetBeans

Objetivos:

             •   Crear un servidor para un servicio de mensajería tipo chat utilizando el lenguaje de
                 programación Java y desarrollado mediante la plataforma NetBeans que permita
                 la conexión entre dos o más computadores o clientes chat.
             •   Desarrollar mediante una interfaz gráfica un cliente de mensajería tipo chat con el
                 cual los usuarios puedan interactuar no solo con strings, sino también con objetos,
                 imágenes, colores, emoticones etc., conectados mediante el servidor previamente
                 desarrollado.
             •   Añadir la aplicación de Java que nos permita almacenar las conversaciones o los
                 contactos de los usuarios.

Integrantes:

             •   Carlos Santamaría
             •   Ángel López



DESARROLLO TEÓRICO

Introducción:

QUE ES UN CHAT (IRC)

En Internet, la gran "mediateca" global, se puede hacer casi de todo y uno de los servicios que
ofrece Internet es el IRC (Internet Relay Chat). A través del IRC, se puede charlar con otros
usuarios que en ese momento también estén conectados a la red, no importa en qué parte del
mundo. Además se nos ofrece la posibilidad de entablar conversación con cientos o miles de
usuarios simultáneamente.

En realidad, el IRC está basado en el TALK, un programa para Unix que permite la conexión con un
ordenador remoto para mantener una charla interactiva con su operador, de manera que todo lo
que se escribe a través del teclado lo recibe la otra persona en su monitor y viceversa. El IRC es
pues algo parecido, aunque mucho más evolucionado.




Carlos Santamaría                                                                              2010
Ángel López
Escuela Politécnica Nacional
                                                                Programación Orientada a Objetos
                                                                              Crea un chat en JAVA


COMANDOS BÁSICOS DE IRC

Los comandos que se van a describir ahora son los más elementales que debe conocer un usuario
para participar en las conversaciones. Estos comandos son enviados por el cliente al servidor,
quien se encarga de reaccionar de forma adecuada ante ellos.

   •   /HELP: permite obtener ayuda.
   •   /JOIN &nombre_canal, /CHANNEL &nombre_canal: introduce al usuario en el canal
       especificado. Si este canal no existe, se crea (la gestión dinámica de canales es otra de las
       posibilidades del IRC), y además confiere al usuario el privilegio de ser el operador del
       canal.
   •   /WHO nombre_canal: muestra una lista de los usuarios del IRC. Si se indica un nombre de
       canal, restringe el listado a las personas que están presentes en ese canal.
   •   /WHOIS nick: muestra más información sobre un usuario del que conocemos su nick. Sin
       embargo, por las razones ya comentadas, la información no suele ser cierta.
   •   /TOPIC cadena: cambia el topic o descripción del canal (si tenemos privilegios para poder
       hacerlo).
   •   /NICK nuevo_nick: permite cambiar nuestro nick o apodo.
   •   /MSG nick mensaje: envía un mensaje personal a un usuario determinado, sin que los
       demás usuarios lo vean en su pantalla.
   •   /SIGNOFF, /SI, /BYE, /EXIT, /QUIT: cualquiera de ellos sirve para abandonar la
       conversación. Si se añade un texto detrás del comando, será enviado como mensaje de
       despedida.
   •   /USERS: muestra una lista de todos los usuarios conectados al servidor.
   •   /AWAY: se utiliza para anunciar que, sin abandonar el servidor, vamos a estar unos
       minutos sin atender a la conversación.
   •   /QUERY nick: invita al usuario indicado a participar en una conversación privada. Si el
       receptor responde con un comando similar, el diálogo particular dará comienzo.

Los siguientes comandos los utilizan exclusivamente los operadores:

   •   /OPER nick password: da al usuario indicado los privilegios de operador (si la contraseña
       es válida).
   •   /KICK nick: expulsa al usuario indicado del servidor.
   •   /QUOTE comando: permite enviar comandos al servidor. Se puede utilizar para matar el
       demonio o realizar operaciones privilegiadas.

ATAQUES EN EL IRC

Como veremos más adelante, tanto el demonio de IRC como el bot de gestión de los canales
dedican una parte importante de su funcionalidad a impedir la entrada de algunos usuarios en las
redes de IRC. ? Por qué es tan importante poder hacer esto?



Carlos Santamaría                                                                             2010
Ángel López
Escuela Politécnica Nacional
                                                              Programación Orientada a Objetos
                                                                            Crea un chat en JAVA


La razón es que existen usuarios con grandes conocimientos sobre el IRC, y que muestran una
actitud beligerante respecto a las más desprevenidos, los usuarios noveles. Aprovechándose de las
grietas del sistema, son capaces de expulsar a otros usuarios e incluso colgar máquinas remotas,
mediante diversos tipos de estrategias:

   •   Flood: consiste en requerir mucha información de un usuario de manera continua
       (mediante version, whois, ping, dcc, etc.), con el objeto de que la máquina atacada
       devuelva todas las peticiones, llegando a poner en peligro de saturación al servidor, que
       procederá a expulsarla.
   •   Floodnets: son grupos de usuarios coordinados mediante scripts, que consiguen hacer el
       trabajo de flood más efectivo.
   •   Botnets: se trata de una versión automatizada (mediante scripts) del flood.
   •   ICMP: este tipo de ataques son mucho más sofisticados y malignos. Como dato, baste
       decir que existe un script escrito en sólo cinco líneas de perl y capaz de bloquear una
       máquina Windows remota.
   •   Smurf: consiste en enviar un ping a la dirección broadcast de una gran red, con la
       identidad de el remitente falseada para que apunte a la persona atacada. Las respuestas
       de las máquinas de la red irán directamente a esta persona, rompiéndole la conexión.


HISTORIA DE LOS CHAT´S

Los inicios del IRC se remontan a 1988, cuando un finlandés llamado Jarkko Oikarinen5 escribió el
código original. Fue por tanto en Finlandia donde se comenzó a usar esta tecnología, aunque en
ese momento todavía no estaba en Internet, sino que J. Oikarinen la diseñó para usarla en su
propia BBS6 como un sistema multichat en tiempo real.

VENTAJAS DE UN SISTEMA MULTICHAT

Hoy en día la principal ventaja del multichat es recibir mensajes sin conexión. Tan pronto como
usted entra, usted recibirá todos los mensajes que se enviaron a usted cuando usted se fuera de
línea.
¿Quieres hablar con un compañero, pero él acaba de ir fuera de línea? Sólo tienes que enviar un
mensaje fuera de línea directamente desde tu móvil. eBuddy Mobile Messenger es compatible con
mensajería fuera de línea.




Carlos Santamaría                                                                           2010
Ángel López
Escuela Politécnica Nacional
                                                              Programación Orientada a Objetos
                                                                            Crea un chat en JAVA



FORMATO DE UN CHAT EN JAVA




Cuando comenzó a usar Internet como medio, el sistema comenzó a popularizarse rápidamente y
pasó a convertirse en una herramienta de comunicación casi indispensable para todos aquellos
que necesitaban comunicarse de una manera más directa que con el correo electrónico.

Hay dos fechas clave que marcaron el impulso definitivo del IRC. La primera es 1991, con el
estallido de La Guerra del Golfo; el uso de este sistema de comunicación que plasmaba la realidad
segundo a segundo comenzó a tomarse en serio. Fue en este momento cuando comenzaron a
florecer los programas de IRC.

La otra fecha es Septiembre de 1993, cuando gran número de usuarios (en tiempo real)
informaban desde Moscú de la inestabilidad social y política por la que estaba pasando el país.

Actualmente, los canales de conversación del IRC abarcan todos los temas imaginables, pudiendo
encontrar canales en los que se habla de los temas más simples, hasta canales en donde los temas
de conversación son absolutamente serios y de gran acervo cultural.

Carlos Santamaría                                                                           2010
Ángel López
Escuela Politécnica Nacional
                                                                  Programación Orientada a Objetos
                                                                                Crea un chat en JAVA



Actualmente, las redes más grandes de servidores de IRC son: Efnet7, DALnet8, UnderNet9,
NewNet10 y GalaxyNet11

ELEMENTOS DE UN CHAT

Dentro de los elementos que encontramos dentro de un Chat para que se pueda llevar a cabo la
comunicación, están los siguientes

Usuarios. Serán las personas que harán uso del Chat.

Canales. Donde los usuarios podrán entrar y salir, aunque en algunas se deban cumplir ciertos
requisitos.

Chat Room Salas de Charla. Donde todos los usuarios "hablan" entre ellos

OPERS. Donde el/los usuario/s solicitan canales o cualquier tipo de información.

ADM (Administradores). Estos son los que marcan las pautas y normas a seguir para el buen
funcionamiento del Chat y la conducta de los usuarios.

IrCOP. Serán las personas que se dedican al mantenimiento del Chat.

OPER. Son las personas que ante las necesidades de los usuarios, les ayudan o suministran
cualquier tipo de información respecto, comunicaciones entre canales, entre usuarios, reservas de
canales privados, etc.

CARACTERÍSTICAS DE LOS CHAT´S

La tecnología de la CMC hace posible que un grupo de personas distantes físicamente, sin la
posibilidad de verse el uno al otro puedan comunicarse de manera sincrónica, al igual que en los
encuentros cara a cara, usando la palabra escrita. En esta forma de comunicación se combinan la
permanencia de la palabra escrita y la fluidez del intercambio propia de las conversaciones
presénciales.

Dentro de las características principales podemos mencionar:

Abierto las 24 horas del día todos los días. Internet y la totalidad de sus aplicaciones están
disponibles las 24 horas del día todos los días. Sólo un par de clicks separan a la persona del acceso
al mundo virtual si cuenta con el software12 y el hardware13 necesarios. Una vez ingresado
(conectado) a la red, siempre habrá personas esperando alguien con quien conversar. Puede
plantearse la posibilidad de que la persona frecuente un mismo chat room y que en éste, a las 7 de
la mañana, no haya usuarios. Este pequeño problema se soluciona fácilmente: se puede entrar a



Carlos Santamaría                                                                               2010
Ángel López
Escuela Politécnica Nacional
                                                                Programación Orientada a Objetos
                                                                              Crea un chat en JAVA


otros canales de otros países (por ejemplo, al de España, que remite a un lugar del mundo donde
son las 11 de la mañana y probablemente haya más usuarios en línea).

Control sobre la presentación de uno mismo y sobre lo que los otros ven del sí mismo. En IRC, el
anonimato, facilita la creación de un personaje. Las máscaras esconden a la persona y permiten
jugar un personaje cuyas características son fácilmente configuradas por la propia persona.

Control sobre la relación. Los programas de IRC ofrecen la posibilidad de elegir con quien hablar y
con quién no. Es decir, que si al sujeto no le interesa comunicarse con una determinada persona,
con sólo tipiar un comando (/ignore) seguido por, por ejemplo, el nickname de ésta, logra su
objetivo.                                                                                         }

TIPOS DE CHAT

Los hay de todo tipo, desde el que solo admite texto sobre un fondo liso (la versión primera del
MIRC, hasta el que combina también voz e imagen junto con la posibilidad de compartir archivos,
dibujar en una misma pizarra, etc. Poco a poco, los chat´s se están quedando anticuados y en muy
poco tiempo nos encontraremos con chats en 3D (ya existen algunos) acompañados de
videoconferencia.


Desarrollo del proyecto

Utilización de sockets

Sockets: Son un sistema de comunicación entre procesos de diferentes máquinas de una red. Más
exactamente, un socket es un punto de comunicación por el cual un proceso puede emitir o recibir
información.
Un socket es un punto final de una comunicación bidireccional entre 2 programasejecutándose en
la red. Un socket se asocia a un número de puerto de forma que elprotocolo de la capa de
transporte (en nuestro caso TCP) pueda identificar la aplicación a laque están destinados los datos.
Así, los sockets permiten crear la ilusión al programador deque mandar/recibir datos por la red es
algo similar a escribir/leer datos de un disco.
El servidor corre sobre una máquina y tiene un socket asociado a un puerto determinado, porel
que está esperando la petición de una conexión de un cliente.
El cliente conoce el nombre de la máquina donde se está ejecutando el servidor y el número de
puerto por el que está escuchando el servidor.

DIAGRAMA




Carlos Santamaría                                                                             2010
Ángel López
Escuela Politécnica Nacional
                                                                Programación Orientada a Objetos
                                                                             Crea un chat en JAVA




El cliente realiza una petición de conexión al servidor con el nombre de máquina del servidor y el
puerto.
Si no se produce ningún error el servidor acepta la conexión. Crea un nuevo socket para atender la
petición
de ese cliente y mantiene el socket original que está escuchando para atender peticiones de
nuevos clientes.
A partir de este momento el cliente y el servidor pueden comunicarse leyendo o escribiendo en
sus sockets.
La clase Socket implementa un lado de la conexión bidireccional entre dos aplicaciones Java en la
red. Permite crear conexiones de clientes con servidores. La clase Server Socket implementa el
otro lado de la conexión bidireccional. En concreto permite crear un socket que puede escuchar en
un puerto y aceptar conexiones de clientes.
Ambas son implementaciones que ocultan los detalles de las plataformas concretas (hardware y
sistema operativo) donde se ejecutan las aplicaciones cliente y servidor.


El chat que desarrollamos utiliza sockets, los cuales funcionan bajo una arquitectura cliente
servidor, en donde se tiene un servidor y los clientes se conectan a éste y a través de él, se
comunican entre sí. La gracia del chat es que hace envió de objetos en vez de simples cadenas de
texto, para esto se utiliza la clase ObjectInputStream y ObjectOutputStream, los objetos de estas
clases permiten escribir y leer objetos con los métodos writeObject y readObject, ambos reciben
como parámetro un objeto. La idea es que todo lo que viaje por la red debe estar serializado, en el
caso del chat se utiliza una clase Mensaje, la cual tiene un contenido (avatar, color de la fuente,
mensaje en texto, etc.) y cada parte del contenido debe estar serializado a su vez, si alguna cosa
no está serializada, entonces la clase que lo contiene no podrá estarlo tampoco.

ObjectInputStream Objeto de entrada, cual escribe tipos de datos primitivos y gráficos de objetos
Java a un flujo de salida. Los objetos se pueden leer usando un ObjectInputStream. De
almacenamiento persistente de objetos se puede realizar mediante un archivo de la secuencia

ObjectOutputStream Objeto de salida, el cual escribe tipos de datos primitivos y gráficos de
objetos Java a un flujo de salida. Los objetos se pueden leer usando un ObjectInputStream. De
almacenamiento persistente de objetos se puede realizar mediante un archivo de la secuencia.




Carlos Santamaría                                                                            2010
Ángel López
Escuela Politécnica Nacional
                                                                 Programación Orientada a Objetos
                                                                               Crea un chat en JAVA


Para tener una visión completa del sistema, podemos revisar la arquitectura del chat:




Como pueden ver, el cliente consta de dos partes fundamentales, Cliente y Orquestador.

Cliente es la parte gráfica, la que el usuario ve y Orquestador es la parte que se conecta con el
servidor y maneja la lógica (envía y recibe mensajes).

La parte servidor tiene un Servidor que recibe las conexiones y maneja una lista de clientes, la cual
está en un objeto de la clase RecursoClientes, la cual utiliza el patrón de diseño Singleton (thread
safe).

Cuando un cliente se conecta, el Servidor recibe el nickname del Cliente y busca en la lista si ya
existe, de ser así impide la conexión y avisa al Cliente, es una regla que implementamos, en caso
contrario la conexión se acepta y se delega el trabajo a un thread o hilo ManejadorCliente, el cual
se encarga de recibir los mensajes del Cliente y se los pasa a los demás Clientes de la lista, además
se encarga de quitarlo de la lista cuando éste se desconecta y avisa a los demás de la desconexión.




Carlos Santamaría                                                                              2010
Ángel López
Escuela Politécnica Nacional
                                    Programación Orientada a Objetos
                                                Crea un chat en JAVA


Diagrama de clases del cliente:




Diagrama de clases del servidor.




Carlos Santamaría                                              2010
Ángel López
Escuela Politécnica Nacional
                                                               Programación Orientada a Objetos
                                                                            Crea un chat en JAVA




El servidor tiene menos clases por lo que se podría decir que es más sencillo pero al mismo tiempo
hay conceptos que son más difíciles de entender como es el patrón de diseño Singleton

El cliente es más complejo en el sentido que tiene más clases, pero varias son solo clases para
definir algunas cosas gráficas, nada complejo de entender. La clase más importante es
Orquestador, que es la que se encarga de toda la lógica y paso de mensajes hacia el cliente (a
través de la interfaz OrquestadorInterface) y hacia el servidor es decir otros clientes.

Hay que tener en cuenta que lo que se envía por la red son objetos de tipo Mensaje, por lo tanto
esa clase debe estar tanto en el cliente como en el servidor.

Acá pueden ver el diagrama de secuencia del servidor y del cliente




Carlos Santamaría                                                                            2010
Ángel López
Escuela Politécnica Nacional
                     Programación Orientada a Objetos
                                 Crea un chat en JAVA




Carlos Santamaría                               2010
Ángel López
Escuela Politécnica Nacional
                                                                Programación Orientada a Objetos
                                                                             Crea un chat en JAVA


Con esos diagramas es fácil entender el paso de mensajes entre los objetos que conforman el
software, tanto en la parte cliente como en el servidor. Por ejemplo se puede ver la secuencia de
mensajes desde que un cliente se conecta hasta que se desconecta.

La Plataforma NetBeans

Es una plataforma que ofrece servicios comunes a las aplicaciones de escritorio, permitiéndole al
desarrollador enfocarse en la lógica específica de su aplicación. Entre las características de la
plataforma están:

    •   Administración de las interfaces de usuario (ej. menús y barras de herramientas)
    •   Administración de las configuraciones del usuario
    •   Administración del almacenamiento (guardando y cargando cualquier tipo de dato)
    •   Administración de ventanas
    •   Framework basado en asistentes (diálogos paso a paso)


NETBEANS IDE

El IDE NetBeans es un IDE - una herramienta para programadores pensada para escribir, compilar,
depurar y ejecutar programas. Está escrito en Java - pero puede servir para cualquier otro lenguaje
de programación. Existe además un número importante de módulos para extender el IDE
NetBeans. El IDE NetBeans es un producto libre y gratuito sin restricciones de uso.

El NetBeans IDE es un IDE de código abierto escrito completamente en Java usando la plataforma
NetBeans. El NetBeans IDE soporta el desarrollo de todos los tipos de aplicación Java (J2SE, web,
EJB y aplicaciones móviles). Entre sus características se encuentra un sistema de proyectos basado
en Ant, control de versiones y refactoring.

Desde Julio de 2006, NetBeans IDE es licenciado bajo la Common Development

Una venNetBeans Add-on Packstaja de usar NetBeans 6.0 es que viene con UML integrado y
soporta ingeniería inversa (o reversa) por lo que pueden hacer diagramas de cualquier tipo
(soportado) desde el código fuente con un simple click derecho en el proyecto -> Reverse Engineer
y listo.



También pueden generar un nuevo proyecto UML y generar código a partir del diagrama de clases,
es decir pueden utilizar UML hacia ambos lados, desde y hacia, lo cual es sumamente interesante y
por sobre todo útil

Capturas del chat funcionando


Carlos Santamaría                                                                            2010
Ángel López
Escuela Politécnica Nacional
                                                              Programación Orientada a Objetos
                                                                           Crea un chat en JAVA




HERENCIA EN JAVA


La idea de la herencia es permitir la creación de nuevas clases basadas en clases existentes.
Cuando heredamos de una clase existente, reusamos (o heredamos) métodos y campos, y
agregamos nuevos campos y métodos para cumplir con la situación nueva.
Cada vez que encontremos la relación "es-un" entre dos clases, estamos ante la presencia de
herencia.

La   clase ya existente es llamada superclass, o clase base,                 o    clase padre.
La    clase  nueva    es  llamada subclase,   clase derivada,                o     clase  hija.

A través de la herencia podemos agregar nuevos campos, y podemos agregar o sobre montar
métodos . Sobre montar un método es redefinirlo en la case heredada.

Jerarquía de Herencia según un chat




CODIGO DEL CHAT

Tal como funciona nuestra aplicación en este momento para cada Cliente Chat que se conecta a
Servidor Chat se crea un objeto de la clase Cliente donde se almacena su Nick (name) y el socket
asignado en tiempo de ejecución en la máquina servidor para comunicarsecon la máquina cliente
(ClienteChat.java), etc.

Modifica el código de ServidorChat.java y de Cliente.java de forma que se cree un thread para
cada ClienteChat.java que se conecte a ServidorChat.java.

 Comprueba que los comandos REGISTER y CLOSE, programados anteriormente, funcionan tal y
como se esperaba
Estudio del ejemplo de uso de Threads “



Carlos Santamaría                                                                          2010
Ángel López
Escuela Politécnica Nacional
                                                                   Programación Orientada a Objetos
                                                                                 Crea un chat en JAVA


Modifica el ejemplo para que muestre por pantalla el nombre del thread que se está ejecutando.

 Ejecuta el nuevo ejemplo varias veces, analízalo y describe cuándo cada uno de los threads
ejecutan código, si aunque no se impriman en la pantalla tienen asignada la CPU, qué imprimen en
la pantalla cada thread y si ambos threads finalizan cuando se ejecuta la sentencia System.exit

 Para que un cliente sea capaz de leer un socket desde teclado concurrentemente y no pueda
enviarte un mensaje mientras estás escribiendo tú un nuevo mensaje o poniendo un nuevo
comando al servidor nos basamos en el código de Ejemplo.java modifica el código de Cliente
Chat.java, para que en el main se cree un objeto Cliente Chat, se creen dos threads de ese objeto,
uno de los threads ejecute el método sendCommand() y el otro thread el métodolistenServer()

 Se encarga de leer comando del usuario y enviarlo a la parte Servidor de nuestra aplicación
El método listenServer() leerá continuamente lo que le envía el servidor
(Cliente.java) y cuando el servidor envíe el mensaje de despedida (“Bye Bye …”) cerrará el socket y
la aplicación de ClienteChat.java.

El comando siguiente envía un mensaje a todos los usuarios conectados en este momento al chat.
El mensaje no debe empezar ni por el carácter del comando SEND_CLIENT_LIST
(‘:’), ni por el REGISTER (‘[’), ni por el CLOSE (‘]’), ni por el PRIVADO (‘/’, reservado para un futuro
comando) Este mensaje aparece en cada una de las pantallas de los usuarios conectados y la
pantalla del usuario conectado muestra:
nickOrigen: mensaje
/nickDestino mensaje

Modifica el código de ServidorChat.java, Cliente.java y de ClienteChat.java para que soporte estos
nuevos comandos.

CONCLUSIONES Y RECOMENDACIONES

Se recomienda que:

•   Se use SocketChannel de java.nio ya que el problema con la arquitectura utilizada es que
    mientras más clientes se conecten, más recursos del servidor se utilizarán, ya que por cada
    cliente se crea un nuevo hilo (Thread). Una solución es NO usar Threads ni Sockets, sino usar
    SocketChannel de java.nio,el cual es más difícil de utilizar y entender, pero vale la pena ya que
    la baja en la utilización de recursos es altísima, además de una mejora sustancial en la
    eficiencia y rapidez de respuesta en el servidor.
•   Después de haber analizado las características propias del lenguaje Java, podemos concluir
    que hasta el momento, es un software de programación en el que podemos confiar al diseñar
    nuestras paginas web, esto es, por su gran versatilidad, facilidad de programación y seguridad.




Carlos Santamaría                                                                                 2010
Ángel López
Escuela Politécnica Nacional
                                                               Programación Orientada a Objetos
                                                                            Crea un chat en JAVA


•   Los Chat´s en nuestra época están dando un gran giro comercial, ya que no solo se utiliza para
    intercomunicar a un grupo de gente, sino que también, para establecer una relación Cliente-
    Vendedor.
•   Actualmente muchas de las grandes empresas ya utilizan los Chat´s para la comunicación con
    sus clientes, ya que por medio de ellos pueden, cotizar, hacer pedidos de productos, verificar
    existencias en tiempo real y hasta tener una entrevista "cara a cara" (por medio de
    videoconferencia). Este tipo de comunicación se puede decir que es mas personalizado que la
    vía telefónica.




Anexos
    •   Más detalles y un video de funcionamiento en http://creaunchatenjava.blogspot.com




Carlos Santamaría                                                                           2010
Ángel López

Más contenido relacionado

La actualidad más candente

Internet (segunda parte)
Internet (segunda parte)Internet (segunda parte)
Internet (segunda parte)nairachaile
 
actividades restantes
actividades restantesactividades restantes
actividades restantesTomas-13
 
Toki Y Moreno
Toki Y MorenoToki Y Moreno
Toki Y Morenotokii
 
Guia word 1_sergio_hernandez
Guia word 1_sergio_hernandezGuia word 1_sergio_hernandez
Guia word 1_sergio_hernandezRobinson Palacio
 
Internet 333 mayca
Internet 333 maycaInternet 333 mayca
Internet 333 maycabren_1105
 
Didactica de la Especialidad
Didactica de la EspecialidadDidactica de la Especialidad
Didactica de la EspecialidadYusmary Sevilla
 
Internet y recursos en linea
Internet y recursos en lineaInternet y recursos en linea
Internet y recursos en lineaJuAnca Viena
 
Internet y Recursos en Linea - Sergio Villanueva
Internet y Recursos en Linea - Sergio Villanueva Internet y Recursos en Linea - Sergio Villanueva
Internet y Recursos en Linea - Sergio Villanueva Sergio9531
 
Trabajo kike pasare hojala si lo se
Trabajo kike pasare  hojala  si lo seTrabajo kike pasare  hojala  si lo se
Trabajo kike pasare hojala si lo sehenrique linarez
 
Internet y Recursos en Linea
Internet y Recursos en LineaInternet y Recursos en Linea
Internet y Recursos en LineaZulemasr
 

La actualidad más candente (12)

Internet (segunda parte)
Internet (segunda parte)Internet (segunda parte)
Internet (segunda parte)
 
Temas restantes
Temas restantesTemas restantes
Temas restantes
 
actividades restantes
actividades restantesactividades restantes
actividades restantes
 
Toki Y Moreno
Toki Y MorenoToki Y Moreno
Toki Y Moreno
 
El Chat
El ChatEl Chat
El Chat
 
Guia word 1_sergio_hernandez
Guia word 1_sergio_hernandezGuia word 1_sergio_hernandez
Guia word 1_sergio_hernandez
 
Internet 333 mayca
Internet 333 maycaInternet 333 mayca
Internet 333 mayca
 
Didactica de la Especialidad
Didactica de la EspecialidadDidactica de la Especialidad
Didactica de la Especialidad
 
Internet y recursos en linea
Internet y recursos en lineaInternet y recursos en linea
Internet y recursos en linea
 
Internet y Recursos en Linea - Sergio Villanueva
Internet y Recursos en Linea - Sergio Villanueva Internet y Recursos en Linea - Sergio Villanueva
Internet y Recursos en Linea - Sergio Villanueva
 
Trabajo kike pasare hojala si lo se
Trabajo kike pasare  hojala  si lo seTrabajo kike pasare  hojala  si lo se
Trabajo kike pasare hojala si lo se
 
Internet y Recursos en Linea
Internet y Recursos en LineaInternet y Recursos en Linea
Internet y Recursos en Linea
 

Destacado

Extinción de los contratos de trabajo
Extinción de los contratos de trabajoExtinción de los contratos de trabajo
Extinción de los contratos de trabajoAna Lopez de Ayala
 
Integracion de las tic en las
Integracion de las tic en lasIntegracion de las tic en las
Integracion de las tic en lassapz77
 
La camisa de l’home feliç
La camisa de l’home feliçLa camisa de l’home feliç
La camisa de l’home feliçjaristos07
 
Sustainable performance - Groupe 24
Sustainable performance - Groupe 24Sustainable performance - Groupe 24
Sustainable performance - Groupe 24Steelfang
 
Dossier de prod perf durable 1
Dossier de prod perf durable 1Dossier de prod perf durable 1
Dossier de prod perf durable 1Groupe110
 
2011 11-07 comparativo progrelect20n final
2011 11-07 comparativo progrelect20n final2011 11-07 comparativo progrelect20n final
2011 11-07 comparativo progrelect20n finaljosemanarce
 
Matematica
MatematicaMatematica
Matematicakcss
 
La Dieta Como Factor De Riesgo En Menopausia
La Dieta Como Factor De Riesgo En MenopausiaLa Dieta Como Factor De Riesgo En Menopausia
La Dieta Como Factor De Riesgo En MenopausiaMiriam Encalada
 
Como Crear Un Blog
Como Crear Un BlogComo Crear Un Blog
Como Crear Un Bloguib
 
CATALOGUE JOUETS NOEL 2014
CATALOGUE JOUETS NOEL 2014CATALOGUE JOUETS NOEL 2014
CATALOGUE JOUETS NOEL 2014fabrice kouadio
 
Rapport final de l'évaluation croisée des programmes LEADER de Charente
Rapport final de l'évaluation croisée des programmes LEADER de CharenteRapport final de l'évaluation croisée des programmes LEADER de Charente
Rapport final de l'évaluation croisée des programmes LEADER de CharenteCleliaB06
 
Anatomía ATP
Anatomía ATPAnatomía ATP
Anatomía ATPDanny
 
Powerpoint Web 2.0
Powerpoint Web 2.0Powerpoint Web 2.0
Powerpoint Web 2.0rebeca15
 
Créer et gérer un site internet seul c'est possible
Créer et gérer un site internet seul c'est possibleCréer et gérer un site internet seul c'est possible
Créer et gérer un site internet seul c'est possibleYoucef Kébaïli
 
Informatik
InformatikInformatik
Informatikgabriela
 

Destacado (20)

El salario
El salarioEl salario
El salario
 
Extinción de los contratos de trabajo
Extinción de los contratos de trabajoExtinción de los contratos de trabajo
Extinción de los contratos de trabajo
 
Integracion de las tic en las
Integracion de las tic en lasIntegracion de las tic en las
Integracion de las tic en las
 
LTArticle
LTArticleLTArticle
LTArticle
 
La camisa de l’home feliç
La camisa de l’home feliçLa camisa de l’home feliç
La camisa de l’home feliç
 
2014-12-16-G9plus-LB-Big-Data
2014-12-16-G9plus-LB-Big-Data2014-12-16-G9plus-LB-Big-Data
2014-12-16-G9plus-LB-Big-Data
 
Sustainable performance - Groupe 24
Sustainable performance - Groupe 24Sustainable performance - Groupe 24
Sustainable performance - Groupe 24
 
Dossier de prod perf durable 1
Dossier de prod perf durable 1Dossier de prod perf durable 1
Dossier de prod perf durable 1
 
2011 11-07 comparativo progrelect20n final
2011 11-07 comparativo progrelect20n final2011 11-07 comparativo progrelect20n final
2011 11-07 comparativo progrelect20n final
 
PORTFOLIO LETTER
PORTFOLIO LETTERPORTFOLIO LETTER
PORTFOLIO LETTER
 
Matematica
MatematicaMatematica
Matematica
 
La Dieta Como Factor De Riesgo En Menopausia
La Dieta Como Factor De Riesgo En MenopausiaLa Dieta Como Factor De Riesgo En Menopausia
La Dieta Como Factor De Riesgo En Menopausia
 
Como Crear Un Blog
Como Crear Un BlogComo Crear Un Blog
Como Crear Un Blog
 
CATALOGUE JOUETS NOEL 2014
CATALOGUE JOUETS NOEL 2014CATALOGUE JOUETS NOEL 2014
CATALOGUE JOUETS NOEL 2014
 
Rapport final de l'évaluation croisée des programmes LEADER de Charente
Rapport final de l'évaluation croisée des programmes LEADER de CharenteRapport final de l'évaluation croisée des programmes LEADER de Charente
Rapport final de l'évaluation croisée des programmes LEADER de Charente
 
Tic Power Acabat!!!
Tic Power Acabat!!!Tic Power Acabat!!!
Tic Power Acabat!!!
 
Anatomía ATP
Anatomía ATPAnatomía ATP
Anatomía ATP
 
Powerpoint Web 2.0
Powerpoint Web 2.0Powerpoint Web 2.0
Powerpoint Web 2.0
 
Créer et gérer un site internet seul c'est possible
Créer et gérer un site internet seul c'est possibleCréer et gérer un site internet seul c'est possible
Créer et gérer un site internet seul c'est possible
 
Informatik
InformatikInformatik
Informatik
 

Similar a Informe Final Poo (20)

Dn12 u3 a14_vsrg
Dn12 u3 a14_vsrgDn12 u3 a14_vsrg
Dn12 u3 a14_vsrg
 
Historia de irc
Historia de ircHistoria de irc
Historia de irc
 
El chat
El chatEl chat
El chat
 
TAREA 9
TAREA 9TAREA 9
TAREA 9
 
TAREA 9
TAREA 9TAREA 9
TAREA 9
 
Historia de irc
Historia de ircHistoria de irc
Historia de irc
 
Internet y comunidades virtuales
Internet y comunidades virtuales Internet y comunidades virtuales
Internet y comunidades virtuales
 
IRC
IRCIRC
IRC
 
Servidor web
Servidor webServidor web
Servidor web
 
Servidor web
Servidor webServidor web
Servidor web
 
Tarea 9
Tarea 9Tarea 9
Tarea 9
 
Historia irc
Historia ircHistoria irc
Historia irc
 
Comunicación on line.1 ppt
Comunicación on line.1 pptComunicación on line.1 ppt
Comunicación on line.1 ppt
 
Comunicación on line.1 ppt
Comunicación on line.1 pptComunicación on line.1 ppt
Comunicación on line.1 ppt
 
Tarea 9
Tarea 9Tarea 9
Tarea 9
 
Tarea 9
Tarea 9Tarea 9
Tarea 9
 
META 4.2 SLAE 2012 CHAVEZ PEREZ
META 4.2 SLAE 2012 CHAVEZ PEREZ META 4.2 SLAE 2012 CHAVEZ PEREZ
META 4.2 SLAE 2012 CHAVEZ PEREZ
 
Tarea 9
Tarea 9Tarea 9
Tarea 9
 
Internet
InternetInternet
Internet
 
IRC
IRCIRC
IRC
 

Informe Final Poo

  • 1. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA Tema: Servicio de mensajería tipo chat desarrollado en Java y utilizando NetBeans Objetivos: • Crear un servidor para un servicio de mensajería tipo chat utilizando el lenguaje de programación Java y desarrollado mediante la plataforma NetBeans que permita la conexión entre dos o más computadores o clientes chat. • Desarrollar mediante una interfaz gráfica un cliente de mensajería tipo chat con el cual los usuarios puedan interactuar no solo con strings, sino también con objetos, imágenes, colores, emoticones etc., conectados mediante el servidor previamente desarrollado. • Añadir la aplicación de Java que nos permita almacenar las conversaciones o los contactos de los usuarios. Integrantes: • Carlos Santamaría • Ángel López DESARROLLO TEÓRICO Introducción: QUE ES UN CHAT (IRC) En Internet, la gran "mediateca" global, se puede hacer casi de todo y uno de los servicios que ofrece Internet es el IRC (Internet Relay Chat). A través del IRC, se puede charlar con otros usuarios que en ese momento también estén conectados a la red, no importa en qué parte del mundo. Además se nos ofrece la posibilidad de entablar conversación con cientos o miles de usuarios simultáneamente. En realidad, el IRC está basado en el TALK, un programa para Unix que permite la conexión con un ordenador remoto para mantener una charla interactiva con su operador, de manera que todo lo que se escribe a través del teclado lo recibe la otra persona en su monitor y viceversa. El IRC es pues algo parecido, aunque mucho más evolucionado. Carlos Santamaría 2010 Ángel López
  • 2. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA COMANDOS BÁSICOS DE IRC Los comandos que se van a describir ahora son los más elementales que debe conocer un usuario para participar en las conversaciones. Estos comandos son enviados por el cliente al servidor, quien se encarga de reaccionar de forma adecuada ante ellos. • /HELP: permite obtener ayuda. • /JOIN &nombre_canal, /CHANNEL &nombre_canal: introduce al usuario en el canal especificado. Si este canal no existe, se crea (la gestión dinámica de canales es otra de las posibilidades del IRC), y además confiere al usuario el privilegio de ser el operador del canal. • /WHO nombre_canal: muestra una lista de los usuarios del IRC. Si se indica un nombre de canal, restringe el listado a las personas que están presentes en ese canal. • /WHOIS nick: muestra más información sobre un usuario del que conocemos su nick. Sin embargo, por las razones ya comentadas, la información no suele ser cierta. • /TOPIC cadena: cambia el topic o descripción del canal (si tenemos privilegios para poder hacerlo). • /NICK nuevo_nick: permite cambiar nuestro nick o apodo. • /MSG nick mensaje: envía un mensaje personal a un usuario determinado, sin que los demás usuarios lo vean en su pantalla. • /SIGNOFF, /SI, /BYE, /EXIT, /QUIT: cualquiera de ellos sirve para abandonar la conversación. Si se añade un texto detrás del comando, será enviado como mensaje de despedida. • /USERS: muestra una lista de todos los usuarios conectados al servidor. • /AWAY: se utiliza para anunciar que, sin abandonar el servidor, vamos a estar unos minutos sin atender a la conversación. • /QUERY nick: invita al usuario indicado a participar en una conversación privada. Si el receptor responde con un comando similar, el diálogo particular dará comienzo. Los siguientes comandos los utilizan exclusivamente los operadores: • /OPER nick password: da al usuario indicado los privilegios de operador (si la contraseña es válida). • /KICK nick: expulsa al usuario indicado del servidor. • /QUOTE comando: permite enviar comandos al servidor. Se puede utilizar para matar el demonio o realizar operaciones privilegiadas. ATAQUES EN EL IRC Como veremos más adelante, tanto el demonio de IRC como el bot de gestión de los canales dedican una parte importante de su funcionalidad a impedir la entrada de algunos usuarios en las redes de IRC. ? Por qué es tan importante poder hacer esto? Carlos Santamaría 2010 Ángel López
  • 3. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA La razón es que existen usuarios con grandes conocimientos sobre el IRC, y que muestran una actitud beligerante respecto a las más desprevenidos, los usuarios noveles. Aprovechándose de las grietas del sistema, son capaces de expulsar a otros usuarios e incluso colgar máquinas remotas, mediante diversos tipos de estrategias: • Flood: consiste en requerir mucha información de un usuario de manera continua (mediante version, whois, ping, dcc, etc.), con el objeto de que la máquina atacada devuelva todas las peticiones, llegando a poner en peligro de saturación al servidor, que procederá a expulsarla. • Floodnets: son grupos de usuarios coordinados mediante scripts, que consiguen hacer el trabajo de flood más efectivo. • Botnets: se trata de una versión automatizada (mediante scripts) del flood. • ICMP: este tipo de ataques son mucho más sofisticados y malignos. Como dato, baste decir que existe un script escrito en sólo cinco líneas de perl y capaz de bloquear una máquina Windows remota. • Smurf: consiste en enviar un ping a la dirección broadcast de una gran red, con la identidad de el remitente falseada para que apunte a la persona atacada. Las respuestas de las máquinas de la red irán directamente a esta persona, rompiéndole la conexión. HISTORIA DE LOS CHAT´S Los inicios del IRC se remontan a 1988, cuando un finlandés llamado Jarkko Oikarinen5 escribió el código original. Fue por tanto en Finlandia donde se comenzó a usar esta tecnología, aunque en ese momento todavía no estaba en Internet, sino que J. Oikarinen la diseñó para usarla en su propia BBS6 como un sistema multichat en tiempo real. VENTAJAS DE UN SISTEMA MULTICHAT Hoy en día la principal ventaja del multichat es recibir mensajes sin conexión. Tan pronto como usted entra, usted recibirá todos los mensajes que se enviaron a usted cuando usted se fuera de línea. ¿Quieres hablar con un compañero, pero él acaba de ir fuera de línea? Sólo tienes que enviar un mensaje fuera de línea directamente desde tu móvil. eBuddy Mobile Messenger es compatible con mensajería fuera de línea. Carlos Santamaría 2010 Ángel López
  • 4. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA FORMATO DE UN CHAT EN JAVA Cuando comenzó a usar Internet como medio, el sistema comenzó a popularizarse rápidamente y pasó a convertirse en una herramienta de comunicación casi indispensable para todos aquellos que necesitaban comunicarse de una manera más directa que con el correo electrónico. Hay dos fechas clave que marcaron el impulso definitivo del IRC. La primera es 1991, con el estallido de La Guerra del Golfo; el uso de este sistema de comunicación que plasmaba la realidad segundo a segundo comenzó a tomarse en serio. Fue en este momento cuando comenzaron a florecer los programas de IRC. La otra fecha es Septiembre de 1993, cuando gran número de usuarios (en tiempo real) informaban desde Moscú de la inestabilidad social y política por la que estaba pasando el país. Actualmente, los canales de conversación del IRC abarcan todos los temas imaginables, pudiendo encontrar canales en los que se habla de los temas más simples, hasta canales en donde los temas de conversación son absolutamente serios y de gran acervo cultural. Carlos Santamaría 2010 Ángel López
  • 5. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA Actualmente, las redes más grandes de servidores de IRC son: Efnet7, DALnet8, UnderNet9, NewNet10 y GalaxyNet11 ELEMENTOS DE UN CHAT Dentro de los elementos que encontramos dentro de un Chat para que se pueda llevar a cabo la comunicación, están los siguientes Usuarios. Serán las personas que harán uso del Chat. Canales. Donde los usuarios podrán entrar y salir, aunque en algunas se deban cumplir ciertos requisitos. Chat Room Salas de Charla. Donde todos los usuarios "hablan" entre ellos OPERS. Donde el/los usuario/s solicitan canales o cualquier tipo de información. ADM (Administradores). Estos son los que marcan las pautas y normas a seguir para el buen funcionamiento del Chat y la conducta de los usuarios. IrCOP. Serán las personas que se dedican al mantenimiento del Chat. OPER. Son las personas que ante las necesidades de los usuarios, les ayudan o suministran cualquier tipo de información respecto, comunicaciones entre canales, entre usuarios, reservas de canales privados, etc. CARACTERÍSTICAS DE LOS CHAT´S La tecnología de la CMC hace posible que un grupo de personas distantes físicamente, sin la posibilidad de verse el uno al otro puedan comunicarse de manera sincrónica, al igual que en los encuentros cara a cara, usando la palabra escrita. En esta forma de comunicación se combinan la permanencia de la palabra escrita y la fluidez del intercambio propia de las conversaciones presénciales. Dentro de las características principales podemos mencionar: Abierto las 24 horas del día todos los días. Internet y la totalidad de sus aplicaciones están disponibles las 24 horas del día todos los días. Sólo un par de clicks separan a la persona del acceso al mundo virtual si cuenta con el software12 y el hardware13 necesarios. Una vez ingresado (conectado) a la red, siempre habrá personas esperando alguien con quien conversar. Puede plantearse la posibilidad de que la persona frecuente un mismo chat room y que en éste, a las 7 de la mañana, no haya usuarios. Este pequeño problema se soluciona fácilmente: se puede entrar a Carlos Santamaría 2010 Ángel López
  • 6. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA otros canales de otros países (por ejemplo, al de España, que remite a un lugar del mundo donde son las 11 de la mañana y probablemente haya más usuarios en línea). Control sobre la presentación de uno mismo y sobre lo que los otros ven del sí mismo. En IRC, el anonimato, facilita la creación de un personaje. Las máscaras esconden a la persona y permiten jugar un personaje cuyas características son fácilmente configuradas por la propia persona. Control sobre la relación. Los programas de IRC ofrecen la posibilidad de elegir con quien hablar y con quién no. Es decir, que si al sujeto no le interesa comunicarse con una determinada persona, con sólo tipiar un comando (/ignore) seguido por, por ejemplo, el nickname de ésta, logra su objetivo. } TIPOS DE CHAT Los hay de todo tipo, desde el que solo admite texto sobre un fondo liso (la versión primera del MIRC, hasta el que combina también voz e imagen junto con la posibilidad de compartir archivos, dibujar en una misma pizarra, etc. Poco a poco, los chat´s se están quedando anticuados y en muy poco tiempo nos encontraremos con chats en 3D (ya existen algunos) acompañados de videoconferencia. Desarrollo del proyecto Utilización de sockets Sockets: Son un sistema de comunicación entre procesos de diferentes máquinas de una red. Más exactamente, un socket es un punto de comunicación por el cual un proceso puede emitir o recibir información. Un socket es un punto final de una comunicación bidireccional entre 2 programasejecutándose en la red. Un socket se asocia a un número de puerto de forma que elprotocolo de la capa de transporte (en nuestro caso TCP) pueda identificar la aplicación a laque están destinados los datos. Así, los sockets permiten crear la ilusión al programador deque mandar/recibir datos por la red es algo similar a escribir/leer datos de un disco. El servidor corre sobre una máquina y tiene un socket asociado a un puerto determinado, porel que está esperando la petición de una conexión de un cliente. El cliente conoce el nombre de la máquina donde se está ejecutando el servidor y el número de puerto por el que está escuchando el servidor. DIAGRAMA Carlos Santamaría 2010 Ángel López
  • 7. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA El cliente realiza una petición de conexión al servidor con el nombre de máquina del servidor y el puerto. Si no se produce ningún error el servidor acepta la conexión. Crea un nuevo socket para atender la petición de ese cliente y mantiene el socket original que está escuchando para atender peticiones de nuevos clientes. A partir de este momento el cliente y el servidor pueden comunicarse leyendo o escribiendo en sus sockets. La clase Socket implementa un lado de la conexión bidireccional entre dos aplicaciones Java en la red. Permite crear conexiones de clientes con servidores. La clase Server Socket implementa el otro lado de la conexión bidireccional. En concreto permite crear un socket que puede escuchar en un puerto y aceptar conexiones de clientes. Ambas son implementaciones que ocultan los detalles de las plataformas concretas (hardware y sistema operativo) donde se ejecutan las aplicaciones cliente y servidor. El chat que desarrollamos utiliza sockets, los cuales funcionan bajo una arquitectura cliente servidor, en donde se tiene un servidor y los clientes se conectan a éste y a través de él, se comunican entre sí. La gracia del chat es que hace envió de objetos en vez de simples cadenas de texto, para esto se utiliza la clase ObjectInputStream y ObjectOutputStream, los objetos de estas clases permiten escribir y leer objetos con los métodos writeObject y readObject, ambos reciben como parámetro un objeto. La idea es que todo lo que viaje por la red debe estar serializado, en el caso del chat se utiliza una clase Mensaje, la cual tiene un contenido (avatar, color de la fuente, mensaje en texto, etc.) y cada parte del contenido debe estar serializado a su vez, si alguna cosa no está serializada, entonces la clase que lo contiene no podrá estarlo tampoco. ObjectInputStream Objeto de entrada, cual escribe tipos de datos primitivos y gráficos de objetos Java a un flujo de salida. Los objetos se pueden leer usando un ObjectInputStream. De almacenamiento persistente de objetos se puede realizar mediante un archivo de la secuencia ObjectOutputStream Objeto de salida, el cual escribe tipos de datos primitivos y gráficos de objetos Java a un flujo de salida. Los objetos se pueden leer usando un ObjectInputStream. De almacenamiento persistente de objetos se puede realizar mediante un archivo de la secuencia. Carlos Santamaría 2010 Ángel López
  • 8. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA Para tener una visión completa del sistema, podemos revisar la arquitectura del chat: Como pueden ver, el cliente consta de dos partes fundamentales, Cliente y Orquestador. Cliente es la parte gráfica, la que el usuario ve y Orquestador es la parte que se conecta con el servidor y maneja la lógica (envía y recibe mensajes). La parte servidor tiene un Servidor que recibe las conexiones y maneja una lista de clientes, la cual está en un objeto de la clase RecursoClientes, la cual utiliza el patrón de diseño Singleton (thread safe). Cuando un cliente se conecta, el Servidor recibe el nickname del Cliente y busca en la lista si ya existe, de ser así impide la conexión y avisa al Cliente, es una regla que implementamos, en caso contrario la conexión se acepta y se delega el trabajo a un thread o hilo ManejadorCliente, el cual se encarga de recibir los mensajes del Cliente y se los pasa a los demás Clientes de la lista, además se encarga de quitarlo de la lista cuando éste se desconecta y avisa a los demás de la desconexión. Carlos Santamaría 2010 Ángel López
  • 9. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA Diagrama de clases del cliente: Diagrama de clases del servidor. Carlos Santamaría 2010 Ángel López
  • 10. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA El servidor tiene menos clases por lo que se podría decir que es más sencillo pero al mismo tiempo hay conceptos que son más difíciles de entender como es el patrón de diseño Singleton El cliente es más complejo en el sentido que tiene más clases, pero varias son solo clases para definir algunas cosas gráficas, nada complejo de entender. La clase más importante es Orquestador, que es la que se encarga de toda la lógica y paso de mensajes hacia el cliente (a través de la interfaz OrquestadorInterface) y hacia el servidor es decir otros clientes. Hay que tener en cuenta que lo que se envía por la red son objetos de tipo Mensaje, por lo tanto esa clase debe estar tanto en el cliente como en el servidor. Acá pueden ver el diagrama de secuencia del servidor y del cliente Carlos Santamaría 2010 Ángel López
  • 11. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA Carlos Santamaría 2010 Ángel López
  • 12. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA Con esos diagramas es fácil entender el paso de mensajes entre los objetos que conforman el software, tanto en la parte cliente como en el servidor. Por ejemplo se puede ver la secuencia de mensajes desde que un cliente se conecta hasta que se desconecta. La Plataforma NetBeans Es una plataforma que ofrece servicios comunes a las aplicaciones de escritorio, permitiéndole al desarrollador enfocarse en la lógica específica de su aplicación. Entre las características de la plataforma están: • Administración de las interfaces de usuario (ej. menús y barras de herramientas) • Administración de las configuraciones del usuario • Administración del almacenamiento (guardando y cargando cualquier tipo de dato) • Administración de ventanas • Framework basado en asistentes (diálogos paso a paso) NETBEANS IDE El IDE NetBeans es un IDE - una herramienta para programadores pensada para escribir, compilar, depurar y ejecutar programas. Está escrito en Java - pero puede servir para cualquier otro lenguaje de programación. Existe además un número importante de módulos para extender el IDE NetBeans. El IDE NetBeans es un producto libre y gratuito sin restricciones de uso. El NetBeans IDE es un IDE de código abierto escrito completamente en Java usando la plataforma NetBeans. El NetBeans IDE soporta el desarrollo de todos los tipos de aplicación Java (J2SE, web, EJB y aplicaciones móviles). Entre sus características se encuentra un sistema de proyectos basado en Ant, control de versiones y refactoring. Desde Julio de 2006, NetBeans IDE es licenciado bajo la Common Development Una venNetBeans Add-on Packstaja de usar NetBeans 6.0 es que viene con UML integrado y soporta ingeniería inversa (o reversa) por lo que pueden hacer diagramas de cualquier tipo (soportado) desde el código fuente con un simple click derecho en el proyecto -> Reverse Engineer y listo. También pueden generar un nuevo proyecto UML y generar código a partir del diagrama de clases, es decir pueden utilizar UML hacia ambos lados, desde y hacia, lo cual es sumamente interesante y por sobre todo útil Capturas del chat funcionando Carlos Santamaría 2010 Ángel López
  • 13. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA HERENCIA EN JAVA La idea de la herencia es permitir la creación de nuevas clases basadas en clases existentes. Cuando heredamos de una clase existente, reusamos (o heredamos) métodos y campos, y agregamos nuevos campos y métodos para cumplir con la situación nueva. Cada vez que encontremos la relación "es-un" entre dos clases, estamos ante la presencia de herencia. La clase ya existente es llamada superclass, o clase base, o clase padre. La clase nueva es llamada subclase, clase derivada, o clase hija. A través de la herencia podemos agregar nuevos campos, y podemos agregar o sobre montar métodos . Sobre montar un método es redefinirlo en la case heredada. Jerarquía de Herencia según un chat CODIGO DEL CHAT Tal como funciona nuestra aplicación en este momento para cada Cliente Chat que se conecta a Servidor Chat se crea un objeto de la clase Cliente donde se almacena su Nick (name) y el socket asignado en tiempo de ejecución en la máquina servidor para comunicarsecon la máquina cliente (ClienteChat.java), etc. Modifica el código de ServidorChat.java y de Cliente.java de forma que se cree un thread para cada ClienteChat.java que se conecte a ServidorChat.java. Comprueba que los comandos REGISTER y CLOSE, programados anteriormente, funcionan tal y como se esperaba Estudio del ejemplo de uso de Threads “ Carlos Santamaría 2010 Ángel López
  • 14. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA Modifica el ejemplo para que muestre por pantalla el nombre del thread que se está ejecutando. Ejecuta el nuevo ejemplo varias veces, analízalo y describe cuándo cada uno de los threads ejecutan código, si aunque no se impriman en la pantalla tienen asignada la CPU, qué imprimen en la pantalla cada thread y si ambos threads finalizan cuando se ejecuta la sentencia System.exit Para que un cliente sea capaz de leer un socket desde teclado concurrentemente y no pueda enviarte un mensaje mientras estás escribiendo tú un nuevo mensaje o poniendo un nuevo comando al servidor nos basamos en el código de Ejemplo.java modifica el código de Cliente Chat.java, para que en el main se cree un objeto Cliente Chat, se creen dos threads de ese objeto, uno de los threads ejecute el método sendCommand() y el otro thread el métodolistenServer() Se encarga de leer comando del usuario y enviarlo a la parte Servidor de nuestra aplicación El método listenServer() leerá continuamente lo que le envía el servidor (Cliente.java) y cuando el servidor envíe el mensaje de despedida (“Bye Bye …”) cerrará el socket y la aplicación de ClienteChat.java. El comando siguiente envía un mensaje a todos los usuarios conectados en este momento al chat. El mensaje no debe empezar ni por el carácter del comando SEND_CLIENT_LIST (‘:’), ni por el REGISTER (‘[’), ni por el CLOSE (‘]’), ni por el PRIVADO (‘/’, reservado para un futuro comando) Este mensaje aparece en cada una de las pantallas de los usuarios conectados y la pantalla del usuario conectado muestra: nickOrigen: mensaje /nickDestino mensaje Modifica el código de ServidorChat.java, Cliente.java y de ClienteChat.java para que soporte estos nuevos comandos. CONCLUSIONES Y RECOMENDACIONES Se recomienda que: • Se use SocketChannel de java.nio ya que el problema con la arquitectura utilizada es que mientras más clientes se conecten, más recursos del servidor se utilizarán, ya que por cada cliente se crea un nuevo hilo (Thread). Una solución es NO usar Threads ni Sockets, sino usar SocketChannel de java.nio,el cual es más difícil de utilizar y entender, pero vale la pena ya que la baja en la utilización de recursos es altísima, además de una mejora sustancial en la eficiencia y rapidez de respuesta en el servidor. • Después de haber analizado las características propias del lenguaje Java, podemos concluir que hasta el momento, es un software de programación en el que podemos confiar al diseñar nuestras paginas web, esto es, por su gran versatilidad, facilidad de programación y seguridad. Carlos Santamaría 2010 Ángel López
  • 15. Escuela Politécnica Nacional Programación Orientada a Objetos Crea un chat en JAVA • Los Chat´s en nuestra época están dando un gran giro comercial, ya que no solo se utiliza para intercomunicar a un grupo de gente, sino que también, para establecer una relación Cliente- Vendedor. • Actualmente muchas de las grandes empresas ya utilizan los Chat´s para la comunicación con sus clientes, ya que por medio de ellos pueden, cotizar, hacer pedidos de productos, verificar existencias en tiempo real y hasta tener una entrevista "cara a cara" (por medio de videoconferencia). Este tipo de comunicación se puede decir que es mas personalizado que la vía telefónica. Anexos • Más detalles y un video de funcionamiento en http://creaunchatenjava.blogspot.com Carlos Santamaría 2010 Ángel López