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”.