Trabajo práctico
Objetivo
Escribir un servidor TCP que permite almacenar información ASCII en forma de clave-valor.
El servidor debe:
-
Esperar a que un cliente se conecte mediante el protocolo TCP, puerto 5000.
-
Esperar a que el cliente envíe un comando a ejecutar. El comando se especifica como una secuencia de caracteres ASCII hasta el
\n
. -
Realizar la operación correspondiente.
-
Cortar la conexión con el cliente y volver al paso 1.
Los comandos que acepta el servidor son:
SET <clave> <valor>\n
:- Se crea en el servidor un archivo llamado
<clave>
con el contenido indicado en<valor>
(sin incluir el\n
). - Se responde al cliente
OK\n
.
- Se crea en el servidor un archivo llamado
GET <clave>
:- Si existe el archivo correspondiente, se responde al cliente con:
OK\n<valor>\n
(es decir, una línea de texto que diceOK
y otra que contiene el contenido del archivo). - Si no existe, se responde con
NOTFOUND\n
- Si existe el archivo correspondiente, se responde al cliente con:
DEL <clave>
:- Si existe la el archivo correspondiente, se elimina.
- Tanto si existe como no, se responde
OK\n
.
Ante cualquier caso excepcional, informar la causa y finalizar el proceso con código de error.
Cliente
Dado que el protocolo de comunicación es ASCII, no es necesario programar un cliente sino que se pueden utilizar herramientas como nc
(netcat) o telnet
.
En ubuntu se pueden instalar con: apt install netcat
o apt install telnet
.
Ejemplo
-
En la consola #1 (server):
./server
-
En la consola #2 (client):
nc localhost 5000
. Si la conexión es exitosa, el proceso se queda esperando a recibir entrada destdin
.
$ nc localhost 5000
SET manzana apple
OK
$ nc localhost 5000
SET perro dog
OK
$ nc localhost 5000
SET hola hello
OK
$ nc localhost 5000
GET perro
OK
dog
$ nc localhost 5000
GET casa
NOTFOUND
$ nc localhost 5000
DEL perro
OK
$ nc localhost 5000
GET perro
NOTFOUND
$
Entrega
Entregar por mail, adjuntando el código fuente o (preferentemente) un link a un repositorio de Github.
- Fecha límite para la primera entrega: hasta clase 6
- Fecha límite de aprobación: hasta clase 8
Una vez recibida la corrección se permiten hasta 2 reentregas, siempre que sea antes de la fecha límite de aprobación.
Nota
La nota del TP se determina en base a la correctitud, prolijiidad y elegancia del código.
La nota final de la materia es un promedio entre la nota del TP y la nota del examen final.