Progettare ed implementare un'applicazione UDP client/server, dove il server è una calcolatrice remota che risponde alle richieste del client nel seguente modo:
- Il client è avviato passando come parametri di input il nome e il numero di porta del server UDP da contattare, rispettando il seguente formato :
srv.di.uniba.it:56700. - Il client legge la scelta dell'operazione da compiere (usando i caratteri
+,x,-,/, rispettivamente per Addizione, Moltiplicazione, Sottrazione e Divisione) e due numeri interi dallo standard input, rispettando il seguente formato:+ 23 45 - Il client invia al server quanto letto da tastiera.
- Ricevuti i dati dal client, il server visualizza sullo std output un messaggio contenente sia il nome sia l’indirizzo dell’host del client e l'operazione da eseguire (Esempio:
Richiesta operazione '+ 23 45' dal client pippo.di.uniba.it, ip 193.204.187.154). - Il server segue l'operazione richiesta e invia il risultato al client nell'esatto formato indicato negli esempi riportati di seguito:
23 + 45 = 68per l'addizione;23 / 45 = 0.51per la divisione;23 * 45 = 1035per il prodotto;23 - 45 = -22per la sottrazione.
- Il client legge la risposta inviata dal server e visualizza la risposta sullo std output (Esempio:
Ricevuto risultato dal server srv.di.uniba.it, ip 193.204.187.166: 23 + 45 = 68). - Il client legge dallo standard input la successiva operazione da compiere.
- Se invece di un'operazione è inserito il carattere
=, il client termina qui il suo processo; altrimenti, torna al punto 2. - Il server non termina mai il suo processo.
- Il protocollo applicativo condiviso fra client e server deve essere specificato tramite file header
.h. - Creare le funzioni matematiche utilizzando i seguenti nomi:
add(),mult(),sub()edivision(). - La lettura da riga di comando è effettuata in una singola lettura (ossia
+ 23 45[invio], non+[invio]23[invio]45[invio]). - Il client e il server devono potersi avviare senza parametri passati da riga di comando, ossia useranno un indirizzo ip e numero di porta predefiniti.
- Le operazioni sono da intendersi indipendenti l'una dall'altra (ossia, i risultati delle operazioni non sono cumulativi).
- Codice e commenti dovranno essere scritti in inglese.