diff --git a/Reti/Laboratorio/Assigment5/Calculator/client b/Reti/Laboratorio/Assigment5/Calculator/client index 9370d342872f7b132d6304237f6d97e5426ea6a7..c4ff7f692ae0b5232f9826502fb0731db98b29f6 100755 Binary files a/Reti/Laboratorio/Assigment5/Calculator/client and b/Reti/Laboratorio/Assigment5/Calculator/client differ diff --git a/Reti/Laboratorio/Assigment5/Calculator/client.c b/Reti/Laboratorio/Assigment5/Calculator/client.c index 02a6abfc6cbf1749609115b9c5269187ea4fb8c7..6a7bff6226b2345481d918c23c47d037aba359ef 100644 --- a/Reti/Laboratorio/Assigment5/Calculator/client.c +++ b/Reti/Laboratorio/Assigment5/Calculator/client.c @@ -97,9 +97,11 @@ int main(int argc, char *argv[]) { printf("Inserire il valore da voler inviare al server con il formato num " "num operator: "); scanf("%d %d %c", &num1, &num2, &operator); - if (valueToSend[0] == '\0') { - fprintf(stderr, "Impossibile inviare una riga vuota!"); + if (num2 == 0 && operator== '/') { + fprintf(stderr, "Impossibile dividere per zero!"); } else { + snprintf(valueToSend, sizeof(valueToSend), "%d %d %c", num1, + num2, operator); write(simpleSocket, valueToSend, strlen(valueToSend)); read(simpleSocket, valueToReceive, sizeof(valueToReceive)); printf("\n\nEcho: %s\n", valueToReceive); diff --git a/Reti/Laboratorio/Assigment5/Calculator/server b/Reti/Laboratorio/Assigment5/Calculator/server index ca77de42d76d51f4fb7d79f062bba3f5669284ca..a7cf889c46686a1c9befaca3fb4f851061b36c20 100755 Binary files a/Reti/Laboratorio/Assigment5/Calculator/server and b/Reti/Laboratorio/Assigment5/Calculator/server differ diff --git a/Reti/Laboratorio/Assigment5/Calculator/server.c b/Reti/Laboratorio/Assigment5/Calculator/server.c index 01e11ec1e8e9cb092b4c25b0178d1ce46f51ab5e..f3ed8725f568a1d0d6aeeb91a89d21af782b8348 100644 --- a/Reti/Laboratorio/Assigment5/Calculator/server.c +++ b/Reti/Laboratorio/Assigment5/Calculator/server.c @@ -101,9 +101,35 @@ int main(int argc, char *argv[]) { memset(valueToRead, '\0', sizeof(valueToRead)); memset(valueToSend, '\0', sizeof(valueToSend)); + int num1; + int num2; + char operator; + float result; + // Leggo il valore ricevuto dal client e gli restituisco la lunghezza read(simpleChildSocket, valueToRead, sizeof(valueToRead)); - snprintf(valueToSend, sizeof(valueToSend), "%zu", strlen(valueToRead)); + sscanf(valueToRead, "%d %d %c", &num1, &num2, &operator); + printf("%d %d %c\n", num1, num2, operator); + + switch (operator) { + case '+': + result = num1 + num2; + break; + case '-': + result = num1 - num2; + break; + case '/': + result = (float)num1 / (float)num2; + break; + case '*': + result = num1 * num2; + break; + default: + fprintf(stderr, "Errore, operatore non valido"); + exit(1); + } + + snprintf(valueToSend, sizeof(valueToSend), "%f", result); write(simpleChildSocket, valueToSend, sizeof(valueToSend)); }