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

Laboratorio di Reti A - AA 2016-2017

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

Mini-Chat Room

Aggregazione dei criteri
Aperto: martedì, 15 novembre 2016, 00:00
Data limite: lunedì, 28 novembre 2016, 00:00

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 ►

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)

        • LAB3B-25/26

        • RETI2025/26A_1

        • BD-A 25/26

        • RETI_B_25/26

        • LPR-A-2526

        • TI_25-26

        • PdP-A 2025

        • PdP-B-2025

        • Reti 2025/26 A

        • RO 25/26

        • Lab2A-25/26

        • LPR-A

            • CompitoMini-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

Blocchi supplementari

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