Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio17: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

Realizzare il codice dell'Esercizio 1 con un Pool di N threads (N e' un parametro del programma) secondo il modello master-worker (Listener thread + Coda + Pool di worker threads). Il thread del Pool gestisce interamente tutta la connessione verso un client.

Esercizio 3

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

informatica/sol/laboratorio17/esercitazionib/esercitazione10.txt · Ultima modifica: 09/05/2017 alle 12:58 (7 anni fa) da Massimo Torquati