Strumenti Utente

Strumenti Sito


lpr-b:lpr-b-09:esercizi

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
lpr-b:lpr-b-09:esercizi [24/11/2009 alle 15:37 (16 anni fa)] Andrea Corradinilpr-b:lpr-b-09:esercizi [08/12/2009 alle 12:45 (15 anni fa)] (versione attuale) Andrea Corradini
Linea 301: Linea 301:
 scrivere un semplice client HTTP in grado di effettuare una breve sequenza di richieste al server, stampando i risultati. Per testare il protocollo si può usare il comando ''telnet <webServer> 80'', che apre una connessione TCP attraverso la quale si possono scambiare stringhe. scrivere un semplice client HTTP in grado di effettuare una breve sequenza di richieste al server, stampando i risultati. Per testare il protocollo si può usare il comando ''telnet <webServer> 80'', che apre una connessione TCP attraverso la quale si possono scambiare stringhe.
  
-===== Ancora TCP e Multicast =====+===== Protocollo TCP e Multicast =====
 ** Inviare gli esercizi svolti a [email protected] con Subject "[LPR-B] Esercitazione 8" ** ** Inviare gli esercizi svolti a [email protected] con Subject "[LPR-B] Esercitazione 8" **
  
Linea 337: Linea 337:
 Definire quindi un client **TimeClient** che si unisce a **dategroup** e riceve, per Definire quindi un client **TimeClient** che si unisce a **dategroup** e riceve, per
 dieci volte consecutive, data ed ora, le visualizza, quindi termina. dieci volte consecutive, data ed ora, le visualizza, quindi termina.
 +
 +=== Esercizio 3: Streaming Audio ===
 +La pagina ''http://en.wikipedia.org/wiki/WAV'' contiene alcuni file di esempio di file
 +audio nel popolare formato WAV (audio non compresso)
 +
 +  * Questi dati possono generalmente essere riprodotti, su macchine UNIX, semplicemente scrivendo il loro contenuto su ''/dev/dsp'' o ''/dev/audio''
 +    * Attenzione: su alcune installazioni, il dispositivo ''/dev/dsp'' è permanentemente occupato da un demone per il mixing audio come ''esd'', ''alsa'', ''pulseaudio'' ecc. Può essere necessario uccidere tale demone perché la riproduzione abbia luogo.
 +  * Si scriva un server streaming audio che, ricevuta sulla riga di comando l'URL di un file WAV, lo scarichi dal web e trasmetta il contenuto, con adeguata temporizzazione, a un gruppo multicast il cui indirizzo è pure fornito sulla riga di comando
 +  * Si scriva poi un client streaming audio che, ricevuto sulla riga di comando l'indirizzo IP di un gruppo, si aggiunga ad esso e riproduca sulla macchina locale l'audio 
 +
 +Non ci si allarmi se l'audio suona “strano”, stiamo trascurando una quantità di parametri...
 +
 +
 +
 +===== Remote Method Invocation =====
 +** Inviare gli esercizi svolti a [email protected] con Subject "[LPR-B] Esercitazione 9" **
 +
 +=== Esercizio 1: Gestione elezione ===
 +Sviluppare una applicazione RMI per la gestione di un’elezione. Il server esporta un insieme di metodi:
 +
 +  * ''public void vota (String nome)'': Accetta come parametro il nome del candidato. Non restituisce alcun valore. Registra il voto di un candidato in una struttura dati opportunamente scelta.
 +
 +  * ''public int risultato (String nome)'': Accetta come parametro il nome di un candidato e restituisce i voti accumulati da tale candidato fino a quel momento.
 +
 +  * un metodo che consenta di ottenere i nomi di tutti i candidati, con i rispettivi voti, ordinati rispetto ai voti ottenuti.
 +
 +Il client invoca un certo numero di volte i metodi del server su opportuni argomenti (eventualmente forniti interattivamente dall'utente), stampando i risultati ottenuti.
 +Testare che il sistema funzioni con server e client sullo stesso host e su host diversi. Nel secondo caso, provare due versioni: con il registry sull'host del server (come negli esempi visti), e con il registry sull'host del client.  
 +
 +=== Esercizio 2: Passaggio di parametri con RMI ===
 +
 +Scrivere opportune classi e interfacce per verificare che nel caso di valori di tipo riferimento (oggetti e array), una invocazione di metodo remota passa al metodo chiamante una copia dell'oggetto passato come parametro, diversamente da quanto accade nel caso di una invocazione locale. Mostrare che invece, se il parametro è un oggetto remoto, allora viene passato un riferimento all'oggetto e non una sua copia. 
 +
 +===== RMI e Callback =====
 +
 +=== Esercizio 1: Gestione elezione ===
 +
 +Modificare l’Esercizio 1 dell'esercitazione precedente in modo che il server notifichi ogni nuovo voto ricevuto a tutti i clients che hanno votato fino a quel momento. La registrazione dei clients sul server avviene nel momento del voto.
 +
 +=== Esercizio 2: Forum ===
 +
 +Si vuole implementare un sistema che implementi un servizio per la gestione di forum in rete. Un forum è caratterizzato da un argomento su cui diversi utenti, iscritti al forum, possono scambiarsi opinioni via rete. 
 +Il sistema deve prevedere un server RMI che fornisca le seguenti funzionalità:
 +  -  apertura di un nuovo forum, di cui è specificato l'argomento (esempio: giardinaggio)‏
 +  -  registrazione ad un forum, di cui è specificato l'argomento
 +  -  inserimento di un nuovo messaggio indirizzato ad un forum identificato dall'argomento (es: è tempo di piantare le viole, indirizzato al forum giardinaggio)‏; il messaggio deve essere inviato agli utenti iscritti al forum
 +  - reperimento dell'ultimo messaggio inviato ad un forum di cui è specificato l'argomento. 
 +Quindi il messaggio può essere richiesto esplicitamente dal client oppure può essere notificato ad un client precedentemente registrato.
 +
  
 =====  ===== =====  =====
lpr-b/lpr-b-09/esercizi.1259077044.txt.gz · Ultima modifica: 24/11/2009 alle 15:37 (16 anni fa) da Andrea Corradini

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki