Pag. 153
- Client appena connesso fa un writeBytes(nomeUtente + '\n')
- Server dopo la connessione fa writeBytes(nomeUtente + ' connsesso' + '\n')
- Client dopo la connessione comunica()
- Server inoltra il messaggio a tutti tranne a quello che l'ha inviato (protocollo messaggio + nomeUtente)
- Server gestisce la situazione con un solo client collegato (impossibile inoltrare il messaggio)
- Client dopo la chiusura della connessione manda un messaggio speciale (nomeUtente + 'left the chat' + '\n')
Server:
- aspetto sulla porta bind(6978) e aspetto la connessione con il client
- appena ci siamo collegati, il server ti chiede il nome utente al client connesso ("dammi il tuo nome" + '\n');
- adesso il server manda a tutti gli altri client connessi ("connessione nuovo utente nome: " + nomeUtente);
- quando mi arriva un messaggio da parte di un client, allora lo invio a tutti gli altri in broadcast (nomeUtente + ": " + strMessaggio);
- quando mi arriva un stringa che vale "EXIT" allora stacco il socket del client attuale;
- invio un messaggio in brodcast globale che avverte gli altri client che il client ha abbandonato la chat (nomeUtente + " si è disconesso");
- se mi arriva una stringa con $b allora richiedo il messaggio e invio a tutti
- se mi arriva una stringa con $v allora richiedo il nome del destinatario, poi il messaggio e invio (in privato) al destinatario
- se mi arriva una stringa con $e: allora elimino la connessione con il client e toglo dall'hashmap il client.
Client:
- Il client appena connesso manda il nome utente al server: (nomeUtente + "\n");
- Il client invia un messaggio: (strMessaggio + "\n");
- Il client per disconnettersi deve mandare un strMessaggio = "EXIT" --> (strMessaggio + '\n');
- se si vuole inviare pubblico: $b, poi dico il messaggio da inviare
- se si vuole inviare privato: $v, poi dico il nome del destinatario ed infine invio il messaggio
- se si vuole uscire dalla chat inviare: $e
/n indica la fine del messaggio