Sunteți pe pagina 1din 4

Introduccin

En una red de computadoras generalmente se busca intercambiar datos entre estas, y de esta manera permitir compartir recursos y carga de procesamiento a travs de varios sistemas. Para ello las mquinas deben tener una manera de comunicarse en comn, para que as se puedan entender entre ellas. A esta se le denomina protocolo, y entre los cuales el ms extendido actualmente es TCP/IP. Adems, una forma de conseguir esta comunicacin a travs de este protocolo es la programacin de sockets. Un socket no es ms que un canal de comunicacin entre dos programas, ya sea en la misma computadora o en distintas mquinas fsicas o virtuales.

Objetivos
Objetivo general
Crear una aplicacin de chat que trabaje como cliente-servidor y permita la comunicacin entre distintos clientes en una red.

Objetivos especficos
Permitir el registro de usuarios Permitir el login de usuarios Permitir la transmisin de informacin en modo broadcast. Permitir la comunicacin P2P entre los clientes

Marco Terico
Los sockets
Socket designa un concepto abstracto por el cual dos programas pueden intercambiar cualquier flujo de datos. Desde el punto de vista de la programacin, un socket es solo un fichero que se utiliza de una manera especial. Una vez abierto este, permite escribir y leer datos de l con sus respectivas funciones. Existen bsicamente dos tipos de sockets, los orientados a conexin (vinculados al protocolo TCP/IP) y los no orientados a conexin (que utilizan el protocolo UDP). Ambos son prcticamente iguales, aunque hay ciertas diferencias en la forma de abrirlos y en la de enviar mensajes.

En el primer caso, ambos programas deben conectarse entre ellos con un socket y hasta que la conexin no se encuentre correctamente establecida no es posible la transmisin de datos. Al utilizar el protocolo TCP/IP, se garantiza la transmisin correcta de todos los datos entre diferentes puntos. Principalmente es utilizado en programas donde la informacin a transmitir es importante y no se puede perder ningn dato. Por este motivo los programas pueden quedarse bloqueados esperando o transmitiendo datos. En el segundo caso, que utiliza el protocolo UDP, no es necesario que los programas se conecten, cualquier de ellos puede transmitir datos en cualquier momento independientemente de que el otro est a la espera o no. El protocolo garantiza la llegada correcta de los datos, pero no de la llegada de todos. Por ende, es utilizado cuando es necesario que los programas no se queden bloqueados por ninguna circunstancia ajena, y por lo tanto no importa tampoco que se pierdan ciertos datos (por ejemplo streaming de audio o video). Para poder realizar la conexin entre ambos programas es necesario que se cumplan ciertos requisitos: que un programa sea capaz de localizar al otro y que ambos programas sean capaces de intercambiarse cualquier secuencia de bytes. Para ello son necesarios los dos recursos que originan el concepto de socket: un par de direcciones de protocolo de red (IPs para identificar las computadoras de origen y las remotas) y un par de nmeros de puerto o servicio, que identifican a un programa dentro de cada computadora.

Pasos a seguir para conseguir una conexin con Sockets usando Java
En el lado del servidor Apertura de un socket: sirve para devolver y preparar un descriptor de fichero que posteriormente el sistema asociar a una conexin de red. Esto se consigue con la instanciacin de la clase Socket. Avisar al sistema operativo el puerto de comunicacin, mediante el cual vamos a atender. Para ello debemos asignar un puerto al socket instanciado. Avisar, pedir y aceptar las conexiones de clientes al sistema operativo: esto se consigue a travs la funcin accept(). Si no hay cliente, se quedar bloqueado hasta que algn cliente se conecte. Asignacin del flujo de entrada del socket a un buffer: se puede realizar instanciando un InputStreamReader mediante la funcin getInputStream() del socket. Posteriormente se instancia un BufferedReader y se le asigna el debido InputStreamReader. Escribir y recibir datos del cliente: mediante las funciones de lectura y escritura de datos. Para ello, tanto el cliente como el servidor deben saber que datos esperan recibir, que datos deben enviar y en que formato. As mismo se utiliza un PrintStream, mediante la funcin getOutputStream del socket. Cierre de la comunicacin del socket: se realiza por medio de la funcin close().

En el lado del cliente Apertura de un socket y solicitacin de conexin con el servidor: de la misma manera que en lado del servidor, pero se asigna una direccin IP o nombre de mquina y el correspondiente puerto de comunicacin. Escribir y recibir datos del o al servidor: de la misma manera que en el lado del servidor, mediante los buffers de entrada y salida. Cerrar la comunicacin del socket: por medio de la funcin close().

Arquitectura Cliente-Servidor
Los sockets permiten la implementacin de una arquitectura cliente-servidor, el cual es un modelo de aplicacin distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios. Esta arquitectura se basa en que uno de los programas debe encontrarse en ejecucin y a la espera de que otro busque conectarse a l. Al que acta de esta forma pasiva se le llama servidor, ya que normalmente es el que tiene la informacin a acceder y la proporciona al que se la solicite. El cliente, el cual es el otro programa, es el que demanda, busca e inicia la conexin con el servidor y solicita informacin. La separacin entre cliente y servidor es solo una separacin de tipo lgico, donde en el servidor no se ejecuta necesariamente sobre una sola mquina ni es obligatoriamente solo un programa. Por ende, esta idea es ms ventajosa cuando se utiliza en una red de computadoras.

Peer-to-Peer (P2P)
Una red punto a punto, o red entre pares, es una red de computadoras en la que todos o algunos aspectos funcionan sin clientes ni servidores fijos, sino en una serie de nodos que se comportan como iguales entre s. En otras palabras, actan al mismo tiempo como clientes y servidores respecto a los dems nodos en la red. Las redes P2P permiten el intercambio directo de informacin, en cualquier formato, entre los ordenadores interconectados.

Threads o Hilos
En el rea de sistemas operativos, un hilo o subproceso es bsicamente la unidad de procesamiento ms pequea que puede ser planificada por un sistema operativo.

La creacin de un nuevo hilo permite por lo tanto que una aplicacin pueda realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecucin comparten un conjunto de recursos tales como espacio de memoria, archivos, etc. Esta tcnica a su vez permite simplificar el diseo de una aplicacin que debe llevar distintas funciones simultneamente.

Conclusiones
El objetivo de esta prctica fue la de comunicar dos o ms computadoras (fsicas o virtuales) para que los usuarios de estas pudiesen interactuar con los dems mediante una sala de chat. Despus de realizar el trabajo se pudo notar que el uso de sockets permite realizar esta tarea sin complicaciones. As mismo, se lleg a un mejor entendimiento de estos y de la arquitectura cliente-servidor. Para la comunicacin fluida entre los distintos clientes y el servidor, cabe recalcar que fue necesario el uso de hilos. Falt implementar la comunicacin directa entre pares, por lo que queda pendiente una mayor investigacin sobre este tema y posterior implementacin.

S-ar putea să vă placă și