From d504db5277cd29ae3e15b1ae1dcaa08b7c5f7425 Mon Sep 17 00:00:00 2001 From: Gianluca <gianlucamastrolonardo10@gmail.com> Date: Thu, 23 May 2024 19:15:34 +0200 Subject: [PATCH] CharCount finito --- .../Laboratorio/Assigment4/EchoServer3/client | Bin 17544 -> 16792 bytes .../Laboratorio/Assigment4/EchoServer3/server | Bin 17544 -> 16792 bytes Reti/Laboratorio/Assigment5/CharCount/client | Bin 0 -> 16800 bytes .../Laboratorio/Assigment5/CharCount/client.c | 64 +++++++++++++++--- Reti/Laboratorio/Assigment5/CharCount/server | Bin 0 -> 16840 bytes .../Laboratorio/Assigment5/CharCount/server.c | 58 ++++++++++++---- 6 files changed, 98 insertions(+), 24 deletions(-) create mode 100755 Reti/Laboratorio/Assigment5/CharCount/client create mode 100755 Reti/Laboratorio/Assigment5/CharCount/server diff --git a/Reti/Laboratorio/Assigment4/EchoServer3/client b/Reti/Laboratorio/Assigment4/EchoServer3/client index 403f505de9e95754c50e52be97844733e1792cca..79c33a6ff77aeb77a2fd5b3c6b7d48dc45ecb447 100755 GIT binary patch delta 3285 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 delta 4150 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 diff --git a/Reti/Laboratorio/Assigment4/EchoServer3/server b/Reti/Laboratorio/Assigment4/EchoServer3/server index 4afb8b029004ffe5be2eea8030e5f58cf9ce9552..086f75bdbd06ddcfd9172601c599b9579fc4e5f8 100755 GIT binary patch delta 3322 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 HO>6%TS}M@j delta 4139 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 V)%g)r+RIblSt9jjQ>dz%^FLKkEHeNA diff --git a/Reti/Laboratorio/Assigment5/CharCount/client b/Reti/Laboratorio/Assigment5/CharCount/client new file mode 100755 index 0000000000000000000000000000000000000000..9370d342872f7b132d6304237f6d97e5426ea6a7 GIT binary patch literal 16800 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 Jd=5U5{Wp0BX?6er literal 0 HcmV?d00001 diff --git a/Reti/Laboratorio/Assigment5/CharCount/client.c b/Reti/Laboratorio/Assigment5/CharCount/client.c index 9d8522a..22eacc1 100644 --- a/Reti/Laboratorio/Assigment5/CharCount/client.c +++ b/Reti/Laboratorio/Assigment5/CharCount/client.c @@ -4,6 +4,7 @@ #include <stdlib.h> #include <string.h> #include <sys/socket.h> +#include <sys/time.h> #include <sys/types.h> #include <unistd.h> @@ -13,8 +14,15 @@ int main(int argc, char *argv[]) { char iterationsServer[256] = {'\0'}; int iterations; + + struct timeval startTime, endTime; + double timeServ; + printf("Inserire il numero di iterazioni: "); scanf("%d", &iterations); + if (!iterations) { + exit(1); + } snprintf(iterationsServer, sizeof(iterationsServer), "%d", iterations); int simpleSocket = 0; @@ -55,7 +63,7 @@ int main(int argc, char *argv[]) { sizeof(simpleServer)); if (returnStatus == 0) { - fprintf(stderr, "Connect successful!\n"); + printf("Connect successful!\n"); } else { fprintf(stderr, "Could not connect to address!\n"); close(simpleSocket); @@ -63,21 +71,59 @@ int main(int argc, char *argv[]) { } // Inviando il numero di iterazioni al server - write(simpleSocket, iterationsServer, strlen(valueToSend)); + write(simpleSocket, iterationsServer, strlen(iterationsServer)); - for (int i = 0; i < iterations; ++i) { + // Avvio il timer + gettimeofday(&startTime, NULL); - /* get the message from the server */ - // returnStatus = read(simpleSocket, buffer, sizeof(buffer)); + // Aspettando l'ACK + read(simpleSocket, valueToReceive, sizeof(valueToReceive)); + if (strcmp(valueToReceive, "ACK") != 0) { + fprintf(stderr, "Invalid ACK"); + exit(0); + } + printf("%s\n", valueToReceive); + + int i = 0; + while (i < iterations) { + // Pulisco i buffer + memset(&valueToReceive, '\0', sizeof(valueToReceive)); + memset(&valueToSend, '\0', sizeof(valueToSend)); printf("Inserire il valore da voler inviare al server: "); scanf("%s", valueToSend); - write(simpleSocket, valueToSend, strlen(valueToSend)); - read(simpleSocket, valueToReceive, sizeof(valueToReceive)); - printf("\n\nEcho: %s\n", valueToReceive); - close(simpleSocket); + if (valueToSend[0] == '\0') { + fprintf(stderr, "Impossibile inviare una riga vuota!"); + } else { + write(simpleSocket, valueToSend, strlen(valueToSend)); + read(simpleSocket, valueToReceive, sizeof(valueToReceive)); + printf("\n\nEcho: %s\n", valueToReceive); + ++i; + } } + // Invio il BYE + memset(&valueToSend, '\0', sizeof(valueToSend)); + snprintf(valueToSend, sizeof(valueToSend), "BYE"); + write(simpleSocket, valueToSend, sizeof(valueToSend)); + + // Aspettando l'ACK + read(simpleSocket, valueToReceive, sizeof(valueToReceive)); + if (strcmp(valueToReceive, "ACK") != 0) { + fprintf(stderr, "Invalid ACK"); + exit(0); + } + printf("%s\n", valueToReceive); + close(simpleSocket); + + // Spengo il timer + gettimeofday(&endTime, NULL); + + timeServ = (endTime.tv_sec + (endTime.tv_usec / 1000000.0)) - + (startTime.tv_sec + (startTime.tv_usec / 1000000.0)); + + printf("Service Time: %.2f", timeServ); + return 0; } diff --git a/Reti/Laboratorio/Assigment5/CharCount/server b/Reti/Laboratorio/Assigment5/CharCount/server new file mode 100755 index 0000000000000000000000000000000000000000..ca77de42d76d51f4fb7d79f062bba3f5669284ca GIT binary patch literal 16840 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 literal 0 HcmV?d00001 diff --git a/Reti/Laboratorio/Assigment5/CharCount/server.c b/Reti/Laboratorio/Assigment5/CharCount/server.c index 6623e4f..01e11ec 100644 --- a/Reti/Laboratorio/Assigment5/CharCount/server.c +++ b/Reti/Laboratorio/Assigment5/CharCount/server.c @@ -74,25 +74,53 @@ int main(int argc, char *argv[]) { int clientNameLength = sizeof(clientName); /* wait here */ + while (1) { + char valueToSend[256] = {'\0'}; + char valueToRead[256] = {'\0'}; - simpleChildSocket = - accept(simpleSocket, (struct sockaddr *)&clientName, &clientNameLength); + simpleChildSocket = + accept(simpleSocket, (struct sockaddr *)&clientName, &clientNameLength); - if (simpleChildSocket == -1) { - fprintf(stderr, "Cannot accept connections!\n"); - close(simpleSocket); - exit(1); - } + if (simpleChildSocket == -1) { + fprintf(stderr, "Cannot accept connections!\n"); + close(simpleSocket); + exit(1); + } - char bufferRead[256] = {'\0'}; - read(simpleChildSocket, bufferRead, sizeof(bufferRead)); + // Leggendo il numero di richieste da svolgere + read(simpleChildSocket, valueToRead, sizeof(valueToRead)); + int iterations = atoi(valueToRead); + printf("Numero iterazioni: %d\n", iterations); - while (1) { - // Read message from client - read(simpleChildSocket, bufferRead, sizeof(bufferRead)); - printf("Received: %s\n", bufferRead); - char valueToSend[256] = {'\0'}; - snprintf(valueToSend, sizeof(valueToSend), "%s", bufferRead); + // Mando ACK al Client + snprintf(valueToSend, sizeof(valueToSend), "ACK"); + write(simpleChildSocket, valueToSend, sizeof(valueToSend)); + + for (int i = 0; i < iterations; ++i) { + // Pulisco i buffer + memset(valueToRead, '\0', sizeof(valueToRead)); + memset(valueToSend, '\0', sizeof(valueToSend)); + + // Leggo il valore ricevuto dal client e gli restituisco la lunghezza + read(simpleChildSocket, valueToRead, sizeof(valueToRead)); + snprintf(valueToSend, sizeof(valueToSend), "%zu", strlen(valueToRead)); + write(simpleChildSocket, valueToSend, sizeof(valueToSend)); + } + + memset(valueToRead, '\0', sizeof(valueToRead)); + memset(valueToSend, '\0', sizeof(valueToSend)); + + // Aspetto il BYE dal client + read(simpleChildSocket, valueToRead, sizeof(valueToRead)); + + if (strcmp(valueToRead, "BYE") != 0) { + fprintf(stderr, "Invalid BYE\n"); + exit(1); + } + printf("\tBYE RECEIVED\n"); + + // Invio ACK al Server + snprintf(valueToSend, sizeof(valueToSend), "ACK"); write(simpleChildSocket, valueToSend, sizeof(valueToSend)); close(simpleChildSocket); -- GitLab