diff --git a/client.c b/client.c index 72377cf..f3d6f63 100644 --- a/client.c +++ b/client.c @@ -149,62 +149,64 @@ int main(int argc, char *argv[]) fflush(stdout); //forza la scrittura dei dati bufferizzati sullo stream return(4); } - fflush(stdout); - scelta=menu(); - if(scelta==0) - messaggio="make\n"; - if(scelta==1) - messaggio="sell\n"; - if(scelta==2){ - scanf("%lf",&prezzo); - messaggio="set price"+prezzo+"\n"; + do{ + fflush(stdout); + scelta=menu(); + if(scelta==0) + messaggio="make\n"; + if(scelta==1) + messaggio="sell\n"; + if(scelta==2){ + scanf("%lf",&prezzo); + messaggio="set price"+prezzo+"\n"; + } + if(scelta==3){ + scanf("%u",&bitto); + messaggio="buy bitto"+bitto; } - if(scelta==3){ - scanf("%u",&bitto); - messaggio="buy bitto"+bitto; - } - if(scelta==4){ - scanf("%u",&farina); - messaggio="buy flour"+farina; - } -} + if(scelta==4){ + scanf("%u",&farina); + messaggio="buy flour"+farina; + } + + /* scrittura => invio del messaggio al server */ + len = strlen(messaggio)+1; + nwrite=0; + printf ("lunghezza messaggio %d write()\n", len); + fflush(stdout); - /* scrittura => invio del messaggio al server */ - len = strlen(messaggio)+1; - nwrite=0; - printf ("lunghezza messaggio %d write()\n", len); - fflush(stdout); - while( (n=write(socketfd, &(messaggio[nwrite]), len-nwrite)) >0 ) - nwrite+=n; - if(n<0) { - char msgerror[1024]; - sprintf(msgerror,"errore operazione di write()[err %d] ",errno); - perror(msgerror); - return(5); - } + while( (n=write(socketfd, &(messaggio[nwrite]), len-nwrite)) >0 ) + nwrite+=n; + if(n<0) { + char msgerror[1024]; + sprintf(msgerror,"errore operazione di write()[err %d] ",errno); + perror(msgerror); + return(5); + } - printf("stringa spedita: %s\n", messaggio); - fflush(stdout); //forza la scrittura dei dati bufferizzati sullo stream + printf("stringa spedita: %s\n", messaggio); + fflush(stdout); //forza la scrittura dei dati bufferizzati sullo stream - /* lettura della risposta */ - nread=0; - printf ("read()\n"); - while( (len>nread) && ((n=read(socketfd, &(buffer[nread]), len-nread )) >0)) - { - nread+=n; // aggiorna il numero di byte letti - printf("read effettuata, risultato n=%d len=%d nread=%d \n", n, len, nread); - } - if(n<0) // si e' verificato un errore - { - char msgerror[1024]; - sprintf(msgerror,"errore in lettura read() [err %d] ",errno); - perror(msgerror); // visualizza la descrizione dell'errore - return(6); - } + /* lettura della risposta */ + nread=0; + printf ("read()\n"); + while( (len>nread) && ((n=read(socketfd, &(buffer[nread]), len-nread )) >0)) + { + nread+=n; // aggiorna il numero di byte letti + printf("read effettuata, risultato n=%d len=%d nread=%d \n", n, len, nread); + } + if(n<0) // si e' verificato un errore + { + char msgerror[1024]; + sprintf(msgerror,"errore in lettura read() [err %d] ",errno); + perror(msgerror); // visualizza la descrizione dell'errore + return(6); + } - /* stampa risultato */ - printf("stringa ricevuta: %s\n", buffer); - fflush(stdout); //forza la scrittura dei dati bufferizzati sullo stream + /* stampa risultato */ + printf("stringa ricevuta: %s\n", buffer); + fflush(stdout); //forza la scrittura dei dati bufferizzati sullo stream + }while(scelta!=5); /* chiusura socket */ close(socketfd);