Vai al contenuto principale
INF - e-learning - Dipartimento di Informatica
  • Italiano ‎(it)‎
    English ‎(en)‎ Italiano ‎(it)‎
Ospite (Login)

Laboratorio di Reti B - A.A. 2015-2016

  1. Home
  2. Corsi
  3. Corso di Laurea in Informatica (L-31)
  4. LabRetiB
  5. 2 maggio - 8 maggio
  6. Esercizi Laboratorio 8 (DEADLINE EXTENDED BY 24 HO...

Esercizi Laboratorio 8 (DEADLINE EXTENDED BY 24 HOURS)

Aggregazione dei criteri
Aperto: martedì, 26 aprile 2016, 00:00
Data limite: martedì, 17 maggio 2016, 00:00

MiniChatRoom

Sviluppare un'applicazione di chat anonima dove gli utenti entrano senza registrarsi, ogni utente può inviare un messaggio e tutti gli utenti ricevono tutti i messaggi, senza sapere da chi vengono.

Il programma deve avere due componenti:

Server:

    • Lancia un servizio multicast per trasmettere i messaggi ricevuti.
    • Aspetta connessioni TCP da clienti
    • Quando una connessione viene stabilita, il server aspetta dei messaggi dal cliente su quella connessione, fin che la connessione viene chiusa dal cliente
    • Ogni volta che un messaggio arriva, il server lo invia a tutti gli clienti usando multicast. Se il messaggio ricevuto e più lungo di 512 byte, viene troncato.
    • Tutti i channel devono essere multiplexati usando un Selector in un solo thread (NIO, channel non-bloccanti).
    • Tip: il channel multicast può essere inizialmente registrato con il selettore usando 0 come interestOps, poi aggiungere l'operazione SelectionKey.OP_WRITE quando si riceve un messaggio da un cliente.

Cliente:

    • Aderisce al gruppo multicast per ricevere messaggi dal server.
    • Si connette al server e gli invia dei messaggi scritti dall’utente alla riga di comando, fin che l’utente scrive “exit”.
    • Per ogni messaggio il cliente invia il testo del messaggio più il carattere ‘#’ per segnalare la fine del messaggio. 
    • La lettura dal channel multicast e la scrittura nel channel TCP si fa nel thread main, usando Selector.
    • L’input dalla tastiera si gestisce in un altro thread (thread di lettura), usando una lista di messaggi per condividere l'input dell'utente con il thread main.
    • La possibile sovrapposizione del input del utente alla riga di comando con i messaggi arrivati dal server non deve essere trattata.
    • Tip: il channel TCP può essere inizialmente registrato con il selettore usando 0 come interestOps, poi aggiungere l'operazione SelectionKey.OP_WRITE nel thread di lettura quando si inserisce un messaggio nella lista di messaggi. Quando la lista di messaggi ridiventa vuota, gli interestOps devono diventare di nuovo uguali a 0.   

◄ Lezione 8
Lezione 9 ►

Blocchi

Salta Navigazione

Navigazione

  • Home

    • Pagine del sito

      • I miei corsi

      • Tag

      • ForumSite news

    • I miei corsi

    • Corsi

      • Corso di Laurea in Informatica (L-31)

        • CC 25 26

        • LBD_25-26

        • LWS25-26

        • Algebra Lineare C 25/26

        • IIA 2026

        • ProgAlgo-C-25

        • LAB3B-25/26

        • RETI2025/26A_1

        • BD-A 25/26

        • RETI_B_25/26

        • LPR-A-2526

        • LabRetiB

          • Laboratorio di Programmazione di Reti - Corso B - ...

          • Progetto anno accademico 2015-2016 - valido fino ...

          • 22 febbraio - 28 febbraio

          • 29 febbraio - 6 marzo

          • 7 marzo - 13 marzo

          • 14 marzo - 20 marzo

          • 21 marzo - 27 marzo

          • 28 marzo - 3 aprile

          • 4 aprile - 10 aprile

          • 11 aprile - 17 aprile

          • 18 aprile - 24 aprile

          • 25 aprile - 1 maggio

          • 2 maggio - 8 maggio

            • CompitoEsercizi Laboratorio 8 (DEADLINE EXTENDED BY 24 HO...

            • FileLezione 9

          • 9 maggio - 15 maggio

          • 16 maggio - 22 maggio

          • 23 maggio - 29 maggio

      • Corso di Laurea Magistrale in Informatica (LM-18)

      • Corso di Laurea Magistrale in Informatica e Networ...

      • Corso di Laurea Magistrale in Data Science and Bus...

      • Corso di Laurea Magistrale in Informatics for Digi...

      • Corsi erogati dal Dipartimento di Matematica

      • Master di II livello in "Professione formatore in ...

      • Corsi CLIL

      • Altri Corsi

      • Anno Accademico 2013-14

Blocchi supplementari

Ospite (Login)
LabRetiB
  • Italiano ‎(it)‎
    • English ‎(en)‎
    • Italiano ‎(it)‎
Riepilogo della conservazione dei dati
Ottieni l'app mobile