Simple Chat
L'obiettivo è quello di costruire una piccola applicazione di chat che rispetti il seguente protocollo.
1. Un server è in ascolto sull'hostname localhost, sulla porta 2893;
2. quando il server accetta una connessione da un client:
- visualizza sullo standard output l'indirizzo IP del nuovo client connesso;
- invia al nuovo client connesso il messaggio CONNECTED seguito da un numero di righe pari al numero di client connessi al server in quel momento. Ogni riga contiene l'idirizzo IP e la porta del client, sulla quale è aperta la connessione, utilizzando il formato IP:porta. Ad esempio, la seguente risposta indica che ci sono già 3 client connessi al server, tutti in esecuzione sull'hostname localhost:
CONNECTED
127.0.0.1:3458
127.0.0.1:3351
127.0.0.1:2987
- invia a tutti i client già connessi il messaggio ADDED IP:port dove IP e port sono l'indirizzo IP e la porta del nuovo client connesso;
3. quando un client, riceve il messaggio CONNECTED, visualizza sul suo standard output tutti i client già connessi. Facendo riferimento al precedente esempio il client visualizza
Sono connesso con
127.0.0.1:3458
127.0.0.1:3351
127.0.0.1:2987
4. quando un client riceve il messaggio ADDED IP:port, visualizza sul suo standard output il testo Si è aggiunto IP:port;
5. dopo aver effettuato la connessione con il server un qualsiasi client può inviare un messaggio al server con il seguente formato
SEND testo
6. quando il server riceve un messaggio SEND testo dal client IP:port, allora invia un messaggio con il formato IP:port@MSG testo a tutti i client connessi, escluso il client IP:port;
7. quando un client riceve un messaggio IP:port@MSG testo dal server, visualizza sul suo standard output il testo
IP:port ha scritto
testo