Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio18:esercitazionib:esercitazione10

Esercitazione 10

Esercizio 1

Realizzare un programma C che implementa server che rimane sempre attivo in attesa di richieste da parte di uno o piu' processi client. Ogni client richiede al server la trasformazione di tutti i caratteri di una stringa da minuscoli a maiuscoli (es. ciao –> CIAO). Per ogni nuova connessione il server lancia un thread POSIX che gestisce tutte le richieste del client (modello thread x connessione) e quindi termina la sua esecuzione quando il client chiude la connessione.
Per testare il programma implementare uno script bash che lancia un certo numero di client ognuno che invia una o piu' richieste al server multithreaded.

Esercizio 2

Riscrivere la soluzione dell'Esercizio 1 senza usare threads ma utilizzando la chiamata di sistema select al fine di risolvere il non determinismo fra l'accettazione di nuove connessioni da parte dei client e la gestione delle richieste dei client gia' connessi.

Esercizio 3

Riscrivere la soluzione dell'Esercizio 1 con un Pool di N threads (N e' un parametro del programma) secondo il modello master-worker (cioe', Listener thread + Coda concorrente + Pool di worker threads). Un generico thread del Pool gestisce interamente tutta la connessione verso un client.

informatica/sol/laboratorio18/esercitazionib/esercitazione10.txt · Ultima modifica: 20/05/2019 alle 14:53 (5 anni fa) da Massimo Torquati