Desarrollo de aplicaciones web

Práctica 2: Servidor de knock, knock

Objetivos

Durante esta práctica, los alumnos serán capaces de:

Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.

Descripción de la actividad

Esta práctica puede ser elaborada de manera individual o en parejas.

Crea un directorio llamado practica2 y coloca ahí el archivo fuente de tu programa.

Tu archivo fuente debe comenzar con un comentario que contenga el título de la práctica, la fecha y los datos personales de los autores (nombre y matrícula). Por ejemplo:

/*----------------------------------------------------------
 * Práctica 2: Servidor de knock, knock
 * Fecha: 28-Ago-2017
 * Autores:
 *           A01166611 Pepper Pots
 *           A01160611 Anthony Stark
 *----------------------------------------------------------*/

Usando los sockets de Node.js, escribe un program que funcione como servidor del protocolo knock, knock. El cliente para probar el servidor debe ser el programa telnet controlado por un usuario.

La interacción entre cliente y servidor se describe a continuación:

  1. Cuando un cliente se conecta al servidor, el servidor selecciona al azar una adivinanza de tipo knock, knock. La adivinanza debe estar conformada por dos partes, por ejemplo: “lettuce” y “lettuce in, it's cold out here”.
  2. El servidor le responde al cliente con la cadena “knock, knock”.
  3. El cliente debe responder al servidor con la cadena “who's there?”. Si responde con cualquier otra cosa, ir al punto 2, de otra forma continuar al punto 4.
  4. El servidor le responde al cliente con x, en donde x es la primera parte de la adivinanza.
  5. El cliente debe responder al servidor con la cadena “x who?”. Si responde con cualquier otra cosa, ir al punto 2, de otra forma continuar al punto 6.
  6. El servidor le responde al cliente con y, en donde y es la segunda parte de la adivinanza.
  7. El servidor termina la conexión con el cliente.

Los siguientes ejemplos muestran una terminal con dos posibles interacciones entre cliente y servidor (la entrada tecleada por el usuario se muestra en azul):

$ telnet localhost 8080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
knock, knock
who's there?
lettuce
lettuce who?
lettuce in, it's cold out here
Connection closed by foreign host.

$ telnet localhost 8080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
knock, knock
what?
knock, knock
hi there
knock, knock
who's there?
cow says
cow says what?
knock, knock
who's there?
cow says
cow says who?
no silly, a cow says mooooo!
Connection closed by foreign host.
    

Algunos puntos importantes a considerar:

¿Qué se debe entregar?

Escribe el reporte de la práctica tal como se detalla en el documento Reportes de prácticas. El nombre del archivo fuente de AsciiDoctor debe ser reporte_practica2.adoc. A partir del código fuente de AsciiDoctor debes generar el archivo PDF correspondiente. Dicho archivo se debe llamar reporte_practica2.pdf. Coloca estos archivos junto cualquier otro archivo adicional que se requiera para generar el reporte dentro del directorio practica2.

Crea un archivo tarball con todo el contenido del directorio practica2. Nombra a este archivo practica2.tgz. Este archivo se puede crear desde la terminal tecleando lo siguiente (asegúrate que te encuentres en el mismo nivel que el directorio practica2):

tar czf practica2.tgz practica2

Instrucciones para subir archivo

Para entregar el archivo practica2.tgz, ingresa los siguientes datos:

Solicitar NIP

Si la práctica fue desarrollada en pareja, basta que solo uno de los miembros la entregue.

La fecha límite es el lunes 28 de agosto.

Evaluación

Esta actividad será evaluada usando los siguientes criterios:

50% Implementación de los requisitos.
50% Reporte de la práctica de laboratorio.
1 El programa y/o reporte es un plagio.