Assignment 12: Mini Chat Room
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. Se il messaggio ricevuto risulta più lungo di 512 byte, viene troncato.
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.
Si devono sviluppare due versioni dell'applicazione, la prima utilizza unicamente le funzionalità di JAVA IO, la seconda utilizza JAVA NIO (specifiche ulteriori nella prossima lezione)