Tarea Sockets (2014-2)
description
Transcript of Tarea Sockets (2014-2)
Tarea – Sockets
Enunciado
En esta tarea, usted creará una breve aplicación que utiliza el esquema cliente servidor usando sockets, específicamente en el lenguaje Java. Para esto, deberá implementar un cliente para la aplicación TareaCloud, cuyo servidor se encuentra activo en la dirección IP 146.83.196.204, escuchando peticiones en el puerto 5000, a través de un socket TCP.
Los clientes que se comuniquen con el servidor deben seguir el siguiente protocolo: 1) Una vez conectado al servidor, este dará un mensaje de bienvenida de la forma
“BIENVENIDO: aaaaa”, donde aaaa corresponde a un string no mayor a 300 caracteres, que debe ser desplegado por su aplicación. Una vez enviado el mensaje de bienvenida, el servidor espera 30 segundos antes de cerrar la conexión, tiempo durante el cual usted debe solicitar una conexión privada.. Cualquiera otra respuesta del servidor, deberá ser considerada como error, mostrándose por pantalla y dando por terminada la aplicación.
2) El cliente solicita la conexión privada enviando el mensaje: “CONEXION” 3) El servidor responde “OK TCP 5xxx” o bien “OK UDP 6xxx” , donde xxx corresponde a un
numero entre 500 y 900, correspondiente a un socket privado para dicho cliente, lo que significa que el cliente se debe conectar al servidor usando el protocolo indicado (TCP o UDP), en el puerto indicado. Después de enviar este mensaje, el servidor cierra la conexión
a. Si la respuesta fue “OK TCP 5xxx”, el servidor abrirá un socket TCP en el puerto 5xxx por 30 segundos, a la espera de una conexión para continuar con el trabajo.
b. Si la respuesta fue “OK UDP 6xxx”, el servidor abrirá un socket UDP en el puerto 6xxx por 30 segundos, a la espera de una conexión para continuar con el trabajo.
c. Cualquiera otra respuesta del servidor, deberá ser considerada como error, mostrándose por pantalla el mensaje correspondiente y dando por terminada la aplicación.
4) Cuando inicie la conexión en el socket privado, el cliente debe enviar el mensaje “GRUPO y”, donde y corresponde a la cantidad de alumnos que componen el grupo y es un número entre 1 y 9.
5) La respuesta del servidor será “OK”. Cualquiera otra respuesta del servidor, deberá ser considerada como error, mostrándose por pantalla y dando por terminada la aplicación
6) Una vez recibido el mensaje “OK”, el cliente deberá enviar el nombre de cada uno de los integrantes, con un largo máximo de 300 caracteres. Por cada uno de los mensajes, el servidor responderá “OK”. Cualquiera otra respuesta del servidor, deberá ser considerada como error, mostrándose por pantalla y dando por terminada la aplicación. Esta operación deberá repetirse y veces. (y es el valor del punto anterior).
7) Para terminar la conexión, el cliente enviará el mensaje “FIN” y esperará la respuesta “OK zzzz”, donde zzz corresponde a un número identificador de la transacción el cual deberá ser desplegado por pantalla, con 0 < zzz < 99999. Cualquiera otra respuesta del servidor, deberá ser considerada como error, mostrándose por pantalla y dando por terminada la aplicación
Implementación
Usted deber implementar solamente el cliente de la aplicación. NO DEBE IMPLEMENTAR EL SERVIDOR. Su cliente deberá ser escrito en Java, y deberá funcionar mediante consola. Una vez iniciado el cliente, este deberá preguntar el número de integrantes y luego cada uno de los nombres, para luego realizar la conexión y proceder al envío de información de los clientes, indicando finalmente el número de la transacción realizada.
Entrega
El trabajo se puede realizar de forma individual o en pareja, (pudiendo ser los integrantes de distintas secciones). Debe entregar su código comentado, el cual debe ser subido a Moodle antes de las 23:50 del día viernes 12 de diciembre. No olvide incluir como comentarios de código, el nombre de los integrantes, y el código de una transacción exitosa.
Evaluación Su tarea será evaluada usando el mismo servidor descrito anteriormente, pero con distintos casos de prueba, los que, junto con la programación darán la nota final. Se recomienda que usted pruebe también usando este servidor y tome en consideración los casos de prueba posibles. Además, es importante considerar lo siguiente:
• Si no compila, su tarea tendrá nota 1.0 • Si su aplicación no sigue el protocolo, tendrá nota 1.0 • Si su aplicación se cae, por error, o por una excepción no capturada, tendrá nota 2.0 • Si su aplicación no realiza ningún caso de prueba, tendrá nota 2.0
Observaciones
• Es su responsabilidad verificar el horario de Moodle y el de su computador, ası́́ como tomar las medidas de resguardo necesarias para asegurar que su trabajo sea enviado antes de que se cierre el módulo de entrega.
• Es su responsabilidad velar por el funcionamiento del servidor de prueba. Si este se encuentra caído, debe enviar un correo a [email protected] avisando este problema.
• El servidor guardará un registro de las conexiones de prueba, y las transacciones realizadas. Es requerimiento que su aplicación haya realizado al menos una prueba exitosa (ese registro de transacción debe incluirse al momento de subir su documento).