Sunteți pe pagina 1din 6

Objetivo

Desarrollar una aplicacin cliente-servidor que simule un carrito de compras con las siguientes caractersticas. *El juego se jugara jugador vs jugador (implementacin con hilos). *El servidor aceptara un mximo de 10 jugadores (5 partidas de 2 jugadores c/u). *Por cada dos jugadores conectados el servidor se ejecutara un hilo *En caso de que el nmero de clientes supere el mximo de jugadores el servidor responder con puerto de otro posible servidor.

Introduccin
Los sockets son un sistema de comunicacin entre procesos de diferentes mquinas de una red. Ms exactamente, un socket es un punto de comunicacin por el cual un proceso puede emitir o recibir informacin. Fueron popularizados por Berckley Software Distribution, de la universidad norteamericana de Berckley. Los sockets han de ser capaces de utilizar el protocolo de streams TCP (Transfer Control Protocol) y el de datagramas UDP (User Datagram Protocol) [Rifflet, 1998]. Utilizan una serie de primitivas para establecer el punto de comunicacin, para conectarse a una mquina remota en un determinado puerto que est disponible, para escuchar en l, para leer o escribir y publicar informacin en l, y finalmente para desconectarse. Con todas primitivas se puede crear un sistema de dilogo muy completo. En la fig.1 se muestra un diagrama de la comunicacin entre un cliente y un servidor, a travs de sockets.

Fig.1: Funcionamiento de una conexin socket

HILOS
Para hablar de hilos en Java primeramente se necesita entender lo que es un hilo. Un hilo es un proceso que se est ejecutando en un momento determinado en nuestro sistema operativo, como cualquier otra tarea, esto se realiza directamente en el procesador. Existen los llamados 'demonios' que son los procesos que define el sistema en s para poder funcionar y otros que llamaremos los hilos definidos por el usuario o por el programador, estos ltimos son procesos a los que el programador define un comportamiento e inicia en un momento especfico. En Java, el proceso que siempre se ejecuta es el llamado main que es a partir del cual se inicia prcticamente todo el comportamiento de nuestra aplicacin, y en ocasiones a la aplicacin le basta con este solo proceso para funcionar de manera adecuada, sin embargo, existen algunas aplicaciones que requieren ms de un proceso (o hilo) ejecutndose al mismo tiempo (multithreading), por ejemplo, se tiene una aplicacin de una tienda departamental de

la cual se actualizan los precios y mercancas varias veces al da a travs de la red, se verifcan los nuevos descuentos y dems pero que a su vez es la encargada de registrar las compras y todos movimientos que se realice con la mercanca dentro de la tienda, si se decide que dicha aplicacin trabajar de la manera simple y con un solo proceso (o hilo), el trabajo de la actualizacin de precios y mercancas debe de finalizar antes de que alguien pueda hacer algn movimiento con un producto dentro de la tienda, o viceversa, ya que la aplicacin no es capaz de mantener el proceso de actualizacin en segundo plano mientras se registra un movimiento. Si se toma este modelo mono-hilo el tiempo y dinero que se perder dentro de la tienda ser muchsimo mayor comparando con un modelo multi-hilo. En un modelo multi-hilo se pueden realizar todas las actualizaciones en segundo plano mientras se registra una o ms ventas o movimientos, cada proceso independiente del otro viviendo o ejecutndose al mismo tiempo dentro de la misma aplicacin. Al hablar de multi-hilo pudiera parecer que necesitamos ms de un procesador para realizar dichas tareas pero no es as, el procesador mismo junto con la mquina virtual de Java gestionan el flujo de trabajo y dan la impresin de que se puede ejecutar ms de algn proceso al mismo tiempo (aunque en trminos estrictos eso no es posible), de cualquier manera no ahondar en el funcionamiento del procesador, basta con entender que en Java, 2 o ms procesos pueden ejecutarse al mismo tiempo dentro de una misma aplicacin y para ello son necesarios los Threads o hilos.

Ahora que ya entendemos lo que son los hilos pasaremos a una definicin un poco ms especfica de Java. En Java un hilo o Thread puede ser 2 cosas:
+ Una instancia de la clase java.lang.Thread + Un proceso en ejecucin Una instancia de la clase java.lang.Thread, no es ms que cualquier otro objeto, con variables y mtodos predefinidos. Un proceso en ejecucin es un proceso individual que realiza una tarea o trabajo, tiene su propia pila de informacin independiente a la de la aplicacin principal. Es necesario entender que el comportamiento de los hilos o threads vara de acuerdo a la mquina virtual, incluso el concepto ms importante a entender con los hilos en Java es que... "Cuando se trata de hilos, muy pocas cosas est garantizadas"Para hablar de hilos en Java primeramente se necesita entender lo que es un hilo. Un hilo es un proceso que se est ejecutando en un momento determinado en nuestro sistema operativo, como cualquier otra tarea, esto se realiza directamente en el procesador. Existen los llamados 'demonios' que son los procesos que define el sistema en s para poder funcionar y otros que llamaremos los hilos

definidos por el usuario o por el programador, estos ltimos son procesos a los que el programador define un comportamiento e inicia en un momento especfico.

En Java, el proceso que siempre se ejecuta es el llamado main que es a partir del cual se inicia prcticamente todo el comportamiento de nuestra aplicacin, y en ocasiones a la aplicacin le basta con este solo proceso para funcionar de manera adecuada, sin embargo, existen algunas aplicaciones que requieren ms de un proceso (o hilo) ejecutndose al mismo tiempo (multithreading), por ejemplo, se tiene una aplicacin de una tienda departamental de la cual se actualizan los precios y mercancas varias veces al da a travs de la red, se verifcan los nuevos descuentos y dems pero que a su vez es la encargada de registrar las compras y todos movimientos que se realice con la mercanca dentro de la tienda, si se decide que dicha aplicacin trabajar de la manera simple y con un solo proceso (o hilo), el trabajo de la actualizacin de precios y mercancas debe de finalizar antes de que alguien pueda hacer algn movimiento con un producto dentro de la tienda, o viceversa, ya que la aplicacin no es capaz de mantener el proceso de actualizacin en segundo plano mientras se registra un movimiento. Si se toma este modelo mono-hilo el tiempo y dinero que se perder dentro de la tienda ser muchsimo mayor comparando con un modelo multi-hilo. En un modelo multi-hilo se pueden realizar todas las actualizaciones en segundo plano mientras se registra una o ms ventas o movimientos, cada proceso independiente del otro viviendo o ejecutndose al mismo tiempo dentro de la misma aplicacin.

Al hablar de multi-hilo pudiera parecer que necesitamos ms de un procesador para realizar dichas tareas pero no es as, el procesador mismo junto con la mquina virtual de Java gestionan el flujo de trabajo y dan la impresin de que se puede ejecutar ms de algn proceso al mismo tiempo (aunque en trminos estrictos eso no es posible), de cualquier manera no ahondar en el funcionamiento del procesador, basta con entender que en Java, 2 o ms procesos pueden ejecutarse al mismo tiempo dentro de una misma aplicacin y para ello son necesarios los Threads o hilos.

Ahora que ya entendemos lo que son los hilos pasaremos a una definicin un poco ms especfica de Java. En Java un hilo o Thread puede ser 2 cosas:
+ Una instancia de la clase java.lang.Thread + Un proceso en ejecucin Una instancia de la clase java.lang.Thread, no es ms que cualquier otro objeto, con variables y mtodos predefinidos. Un proceso en ejecucin es un proceso individual que realiza una tarea o trabajo, tiene su propia pila de informacin independiente a la de la aplicacin principal.

Es necesario entender que el comportamiento de los hilos o threads vara de acuerdo a la mquina virtual, incluso el concepto ms importante a entender con los hilos en Java es que... "Cuando se trata de hilos, muy pocas cosas est garantizadas"

Desarrollo
Bueno el cliente recibe el juego, lo muestra al usuario y empieza a capturar las palabras que el jugador ha encontrado, al finalizar se cierra el juego e indica si el jugador ha ganado o perdido. Despus se muestra el cdigo del juego, este simplemente busca la palabra en la sopa de letras, e indica la direccin donde la ha encontrado.

Figura 11. Modificacin del carrito de compras.

Conclusiones
Durante el desarrollo de la prctica lo que ms presento dificultad fue el envi de las imgenes a travs de los sockets de flujo, enseguida se tuvo un poco de problemitas al cargar cada imagen en una ventana, pero al final se han colocado correctamente y se muestran correctamente, en lo dems fue realmente sencillo.

Bibliografa
Jean-Marie Rifflet, Comunicaciones en UNIX". McGraw Hill. 1998

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