Per permettere a client e server di dialogare, è opportuno implementare un protocollo sulla base del quale sarà loro possibile scambiarsi richieste, inviare conferme e copiare i file opportuni.
L'approcio che ho scelto è stato quello di centralizzare tutta la parte logica e decisionale sul server per ottenere un client leggero. In sostanza il client non farà altro che inviare una richiesta al server e comportarsi nel modo corretto in base alla risposta ottenuta. Il vocabolario del server sarà allora molto piú voluminoso di quello a disposizione del client.
Server | Client |
---|---|
New dir | Another dir |
New file | Another file |
Dir removed | |
File removed | |
Enter dir | |
File updated | |
Newer file | |
Stat | |
End of list |
Come si può notare ho scelto dei codici descrittivi molto ridondanti, ma che ricalcano l'idea base di altri protocolli molto conosciuti ed utilizzati, quali l'SMTP, l'NNTP, etc. Ciò che invece non si vede dalla tabella è la lunghezza effettiva di ogni codice. Poiché il ricevente non può sapere in anticipo quale messaggio gli verrà inviato, è necessario impostare una lunghezza fissa per ogni vocabolo. La scelta piú ovvia ricade sulla lunghezza del comando piú lungo.