chat : Analisi e progettazione Client - Owanesh/unifi-eos GitHub Wiki
Il processo client offre all’utente il seguente menù di selezione principale:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Chat C
--------------------------------------------------
> (1) Connessione al server
> (2) Elenco dei client connessi
> (3) Invia un nuovo messaggio
> (4) Visualizza i nuovi messaggi
> (5) Disconnessione dal server
> (6) Aggiorna il menu'
> (7) Esci
--------------------------------------------------
Hai 0 nuovi messaggi
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Selezionare un'opzione del menu': |
Un processo client che vuole comunicare con altri deve selezionare la scelta 1, ogni altra operazione è infatti disabilitata finché l’utente non decide di connettersi al processo server. Nel caso in cui il processo server non sia ancora stato lanciato, il programma client avvertirà l’utente che è impossibile proseguire perché il server è spento (il client non termina ma rimane nel menù principale). Ogni processo client è identificato dal pid del processo associato (dato che il contesto di questo esercizio è locale alla macchina, il pid offre un metodo veloce di individuare un identificativo univoco).
Per individuare altri client connessi l’utente può accedere all’opzione 2, che automaticamente stamperà a schermo la lista dei clients connessi (il proprio pid sarà visibile in questa lista in modo contrassegnato). Dopo di che un utente può inviare messaggi a tutti i client presenti, in particolare dopo aver scritto il messaggio:
- è possibile selezionare più client destinatari, inserendo una riga per volta tutti pid destinatari e terminando con “invio”;
- nel caso si voglia rinunciare a inviare il messaggio si digiti ‘0’+invio (0 non è ovviamente un possibile destinatario nel nostro contesto);
- nel caso ci siano destinatari non esistenti, l’utente sarà avvertito a schermo con un messaggio (i destinatari esistenti tuttavia riceveranno il messaggio normalmente);
- ogni destinatario riceve una notifica a schermo se ha appena ricevuto un messaggio, tuttavia per essere letto si deve accedere all’apposita sezione del menù ( 4 Visualizza i nuovi messaggi).
Esempio
Inserisci messaggio (MAX 4096 caratteri):
ciao a tutti
Inserisci PID del processo destinatario (0 per annullare, INVIO per terminare): 5555
Inserisci PID del processo destinatario (0 per annullare, INVIO per terminare): 6666
Inserisci PID del processo destinatario (0 per annullare, INVIO per terminare):
Per annullare l’invio digitare 0 + invio, esempio:
Inserisci PID del processo destinatario (0 per annullare, INVIO per terminare):0
Messaggio non inviato.
La visualizzazione dei messaggi ricevuti avviene digitando 4 nel menù principale: in particolare si mantengono tutti i messaggi ricevuti durante la corrente sessione, elencati uno dopo l’altro in ordine di arrivo. I nuovi messaggi non letti sono preceduti da un apposita stringa, inoltre è possibile in ogni momento visualizzare il numero di messaggi non letti dal menù principale (dopo ogni notifica è necessario aggiornare il menù tramite l’opzione 6).
All’atto della disconnessione (opzione 5) il client termina la propria sessione con il server e l’utente viene riportato nel menù principale: i precedenti messaggi ricevuti non sono più disponibili, ma l’utente può riconnettersi a piacimento e ricominciare una nuova sessione.
Il programma può essere definitivamente terminato tramite l’opzione “7 Esci
”.