Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedente | |
informatica:sol:laboratorio13:esercitazioni:esercitazione9 [08/05/2013 alle 06:59 (12 anni fa)] – [Esercizio 3: Un server ed un client] Susanna Pelagatti | informatica:sol:laboratorio13:esercitazioni:esercitazione9 [08/05/2013 alle 07:02 (12 anni fa)] (versione attuale) – [Esercizio 5: Un server e molti client (multithreaded con socket)] Susanna Pelagatti |
---|
==== Esercizio 5: Un server e molti client (multithreaded con socket) ==== | ==== Esercizio 5: Un server e molti client (multithreaded con socket) ==== |
| |
Estendere l'esercizio precedente in modo che il server accetti la connessione da piu' processi client. Ogni client all'avvio decide quanti messeggi inviare (casualmente fra 1 e N_MSG_MAX). Tutti i messaggi inviati contengono il PID del processo client che li invia. Il srever stampa tutti i messaggi ricevuti sullo standard output. | Creare un server che utilizzi le socket AF_UNIX e piu' thread concorrenti per gestire un numero di client. Ogni client all'avvio decide quanti messeggi inviare (casualmente fra 1 e N_MSG_MAX). Tutti i messaggi inviati contengono il PID del processo client che li invia. Il srever stampa tutti i messaggi ricevuti sullo standard output. |
| |
Il server e' realizzato usando piu' thread. Un thread //dispatcher// che accetta le connessioni dai vari client e un thread //worker// per ogni client. Il thread //worker// viene attivato appena la connessione si stabilisce e si occupa di leggere i messaggi del client e stamparli sullo stdout. Quando il client termina l'invio (EOF) il thread //worker// corrispondente termina e libera la memoria occupata. | Il server e' realizzato usando piu' thread. Un thread //dispatcher// che accetta le connessioni dai vari client e un thread //worker// per ogni client. Il thread //worker// viene attivato appena la connessione si stabilisce e si occupa di leggere i messaggi del client e stamparli sullo stdout. Quando il client termina l'invio (EOF) il thread //worker// corrispondente termina e libera la memoria occupata. |