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 A - AA 2016-2017

  1. Home
  2. Courses
  3. Corso di Laurea in Informatica (L-31)
  4. LPR-A
  5. Mini-Chat Room

Mini-Chat Room

Completion requirements
Opened: Tuesday, 15 November 2016, 12:00 AM
Due: Monday, 28 November 2016, 12:00 AM

Gli utenti entrano nella chat senza registrarsi, ogni utente può inviare un messaggio, tutti gli utenti ricevono tutti i messaggi, senza sapere da chi provengano. Si devono sviluppare due versioni del programma, una in cui si utilizza esclusivamente I/O stream-based ed una con NIO.

Il Server: 
  • Aspetta connessioni TCP da clienti 
  • Quando una connessione viene stabilita, il server aspetta dei messaggi dal cliente suquella 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. 
  • (Per la versione NIO) Tutti i channel devono essere multiplexati usando Selector in un solo thread (NIO,channel non-bloccanti).
  • Suggerimento: (per la versione NIO) 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.

Il Client:

  • 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. 
  • (per la versione NIO). La lettura dal channel multicast e la scrittura nel channel TCP si fa in un solo thread, usando Selector. 
  • (per la versione IO) non ci sono vincoli al numero di thread da utilizzare per la definizione del client.
  • 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 dell’input del utente alla riga di comando con i messaggi arrivati dal server non deve essere trattata. 
  • Suggerimento: (per la versione NIO) 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.

◄ DateServer
Gestione Congresso - RMI ►

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

        • LPR-A

            • AssignmentMini-Chat Room

      • 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)
LPR-A
  • English ‎(en)‎
    • English ‎(en)‎
    • Italiano ‎(it)‎
Data retention summary
Get the mobile app