Assignment 10: Mini Chat Room NIO
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 provengono. Il programma deve avere due componenti:
Il Server:
• attende connessioni TCP dai client. Quando una connessione viene stabilita, il server aspetta dei messaggi dal cliente su quella connessione, fintanto che la connessione viene chiusa dal cliente
• ogni volta che riceve un messaggio, il server lo invia a tutti i client usando un gruppo di multicast.
• usa esclusivamente operazioni NIO non bloccante.
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.
• La lettura dal gruppo di multicast e l'invio di messaggi al server è eseguita da un thread.
• L’input dalla tastiera si gestisce in un altro thread (thread di lettura), ed i due thread condividono la lista di messaggi inseriti dall'utente
• la possibile sovrapposizione del input del utente alla riga di comando con i messaggi arrivati dal server non deve essere trattata.