Per il server si è scelto di puntare sull'efficienza, intesa sia come dimensione degli eseguibili, che, soprattutto, come occupazione di risorse di sistema.
Da qui la scelta di scriverlo in C, con gli evidenti risultati in snellezza ma portandoci ad un onere di programmazione non indifferente.
(All'interno del sito e' possibile vedere anche lo schema dei moduli implementati per la sua gestione).

I due server sono al momento due eseguibili distinti di circa 60Kb ciascuno.
Per motivi di praticità e trasporto si è scelto di fare linking statico includendo in entrambe gli eseguibili anche i moduli comuni.
Effettuando un linking dinamico 25Kb vengono condivisi, portando ad una dimensione totale di circa 95Kb.

Alcune soluzioni tecniche mirate a tenere snella l'implementazione meritano attenzione:
Il file di configurazione, in stile Unix viene analizzato da un programma esterno per rendere più agevole la sua lettura. 
Le risorse grandi non vengono prese ed inviate attraverso il socket per intero. Vengono invece spezzettate: sia per limitare l'uso di ram nel prendere la risorsa dal disco, sia per evitare di riempire inutilmente il buffer del socket, se la comunicazione non e' abbastanza veloce 

Inoltre per renderlo quanto piu' vicino ad un server Web si sono implementati :
 Logging
Gestione CGI (solo metodo GET)


 Documentazione Completa del codice in C

 Digrammi di transizione del server


Protocollo
Analisi prestazioni
Client
Server
Download
News 


Last modified: Wed Feb 3 22:28:10 CET 1999