Skip to main content
INF - e-learning - Dipartimento di Informatica
  • English ‎(en)‎
    English ‎(en)‎ Italiano ‎(it)‎
You are currently using guest access (Log in)

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

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

Esercizi Laboratorio 8 (DEADLINE EXTENDED BY 24 HOURS)

Completion requirements
Opened: Tuesday, 26 April 2016, 12:00 AM
Due: Tuesday, 17 May 2016, 12:00 AM

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 ►

Blocks

Skip Navigation

Navigation

  • Home

    • Site pages

      • My courses

      • Tags

      • ForumSite news

    • My courses

    • Courses

      • Corso di Laurea in Informatica (L-31)

        • CN-A ( 24-25)

        • CC 24 25

        • LWS2425

        • ICT security

        • LBD_24-25

        • IIA 2025

        • GC2425

        • ALGEBRA LINEARE 2024-25

        • ALGEBRA

        • PdP-B-2024

        • PdP-A-2024

        • LabRetiB

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

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

          • 22 February - 28 February

          • 29 February - 6 March

          • 7 March - 13 March

          • 14 March - 20 March

          • 21 March - 26 March

          • 28 March - 3 April

          • 4 April - 10 April

          • 11 April - 17 April

          • 18 April - 24 April

          • 25 April - 1 May

          • 2 May - 8 May

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

            • FileLezione 9

          • 9 May - 15 May

          • 16 May - 22 May

          • 23 May - 29 May

      • 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

Blocks

You are currently using guest access (Log in)
LabRetiB
  • English ‎(en)‎
    • English ‎(en)‎
    • Italiano ‎(it)‎
Data retention summary
Get the mobile app