Está en la página 1de 2

Segundo parcial de Aplicaciones para comunicaciones en red

Juego del gato con arquitectura cliente servidor usando sockets multicast, sockest de flujo e hilos en lenguaje C
estandar.

Características
Se podrán lanzar múltiples servidores que, mediante hilos, por un lado, estarán anunciándose por un canal multicast
donde indicaran en que puerto tienen levantado un socket de flujo para permitir la conexión de jugadores de gato.

Cada servidor permitirá conectar hasta 4 jugadores, los pondrá a jugar por pares. Si se intenta conectar un quinto cliente
le denegará el acceso y el cliente deberá de conectarse al siguiente servidor con numero de puerto inmediato superior.

El cliente implementará la interfaz del usuario para el juego del gato.

Instrucciones
Implementar dos programas de cómputo en lenguaje C estándar que funcionen como cliente y servidor con las
siguientes características:

Servidor:
• Al arrancar el servidor preguntará por un número de puerto por donde funcionará un servidor de flujo.
• Al arrancar, lanzará dos hilos.
o En el primero ejecutará un socket de Multicast en la dirección 230.0.0.1:9000 donde estará lanzando
cada segundo datagramas con el número de puerto solicitado al inicio de la ejecución.
o En el segundo hilo, levantará un servidor de sockets de flujo que atenderá las conexiones mediante
hilos.
• El servidor de sockets de flujo permitirá hasta 4 conexiones simultaneas, si llega una quinta denegará el servicio.
• Una vez que llegué la segunda conexión permitirá jugar el juego del gato entre esos dos clientes, cuando llegue
la cuarta conexión, permitirá jugar al segundo par de clientes entre ellos.
• El servidor se encargará de transferir la información necesaria para permitir el juego por pares sin interferir un
juego con otro.
• Una vez que gane alguno de los clientes terminará la conexión de los dos jugadores implicados, permitiendo la
conexión de dos clientes más.

Cliente:
• Al iniciar el programa, preguntará un nombre de usuario, el cual se usará al final para indicar quien gana y quien
pierde el juego.
• Al arrancar el programa levantara dos hilos:
o Un hilo levantará un socket de Multicast en la dirección 230.0.0.1:9000 donde escuchará los servidores
que se estén anunciando. Construirá una lista de los puertos donde están escuchando los servidores de
flujo del menor al mayor.
o Un segundo hilo esperará por 10 segundos para permitir que se construya la lista de servidores.
o Una vez pasado ese tiempo, el segundo hilo levantara un socket de flujo que intentara conectarse al
socket con el número de puerto más pequeño, en caso de que se rechace la conexión intentara
conectarse al segundo y así, sucesivamente hasta que se conecte a alguno o termine la lista, en cuyo
caso avisará y terminara el programa.
• Tendrá una interfaz de línea de comandos para jugar el juego del gato, permitiendo que el usuario inserte la
posición que quiere jugar, la visualice una vez escogida y permite ver el tiro del otro competidor.
• Una vez que termine el juego, avisara quien gano y quien perdió, terminando el programa correctamente.

Requisitos
• El programa se realizará por equipos de dos o tres personas.
• Es obligatorio usar lengua C estándar usando programación estructurada.
• La implementación, tanto del cliente como del servidor será mediante hilos.

Rúbrica
No Cumple Cumple
Funcionalidad
cumple parcialmente completamente

EL servidor levanta un socket de Multicast en un hilo y


0 0 .5
anuncia el puerto del socket de flujo.

El servidor levanta un socket de flujo en un hilo y espera


0 0 .5
conexiones de los clientes.

El servidor permite como máximo 4 clientes conectados. 0 0 .5

El servidor pone a jugar clientes por parejas 0 .5 1

El servidor realiza el paso de los datos entre clientes que


0 1 2
estén jugando sin alterar el otro juego en ejecución

El servidor, una vez terminado el juego cierra las dos


conexiones y permite la conexión de dos clientes más y 0 .5 1
sigue funcionando correctamente.

El cliente levanta un hilo con un socket de multicast y


0 0 .5
crea la lista de los servidores que se anuncian.

El cliente intenta conectarse al servidor con número de


puerto más pequeño y, si el servidor tiene espacio se
0 1 2
conecta a este, en caso contrario busca el siguiente
servidor en la lista.

Se conecta eficientemente y permite jugar el juego por el


0 .5 1
socket de flujo.

Tiene una interfaz de línea que permite insertar los tiros


0 0 .5
realizados y visualizar los tiros del contrincante.

Al terminar del juego anuncia el ganador y al perdedor,


0 0 .5
terminando la conexión correctamente.

Total 10

También podría gustarte