La classe ClientThread

Un server NTP può ricevere anche un elevato numero di richieste al secondo e deve essere in grado di rispondere a tutte.

Per risolvere questo problema si è deciso di porre anche la gestione della risposta ad un client in un thread, definito appunto nella classe ClientThread.

Ogni volta che il server riceve un pacchetto di richiesta memorizza il tempo di arrivo e crea un nuovo thread che si occuperà di rispondere al client, consentendo al server di rimettersi subito in ascolto.

Al construttore di ClientThread vengono passate tutte le informazioni che dovranno essere spedite al client; quando poi sarà posto in esecuzione, il thread controllerà se la richiesta ha un formato valido, nel quale caso preparerà il pacchetto che verrà spedito, dopo di che, il thread smetterà di funzionare.

La socket su cui vengono spediti i messaggi è condivisa tra tutti i ClientThread, è quindi stato necessario porre la chiamata a send in un blocco synchronized, in modo che il metodo possa essere invocato soltanto da un thread alla volta.

2004-01-08