Skip to content
Snippets Groups Projects
Commit d504db52 authored by Gianluca's avatar Gianluca
Browse files

CharCount finito

parent c99d3f02
No related branches found
No related tags found
No related merge requests found
No preview for this file type
No preview for this file type
File added
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/time.h>
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>
...@@ -13,8 +14,15 @@ int main(int argc, char *argv[]) { ...@@ -13,8 +14,15 @@ int main(int argc, char *argv[]) {
char iterationsServer[256] = {'\0'}; char iterationsServer[256] = {'\0'};
int iterations; int iterations;
struct timeval startTime, endTime;
double timeServ;
printf("Inserire il numero di iterazioni: "); printf("Inserire il numero di iterazioni: ");
scanf("%d", &iterations); scanf("%d", &iterations);
if (!iterations) {
exit(1);
}
snprintf(iterationsServer, sizeof(iterationsServer), "%d", iterations); snprintf(iterationsServer, sizeof(iterationsServer), "%d", iterations);
int simpleSocket = 0; int simpleSocket = 0;
...@@ -55,7 +63,7 @@ int main(int argc, char *argv[]) { ...@@ -55,7 +63,7 @@ int main(int argc, char *argv[]) {
sizeof(simpleServer)); sizeof(simpleServer));
if (returnStatus == 0) { if (returnStatus == 0) {
fprintf(stderr, "Connect successful!\n"); printf("Connect successful!\n");
} else { } else {
fprintf(stderr, "Could not connect to address!\n"); fprintf(stderr, "Could not connect to address!\n");
close(simpleSocket); close(simpleSocket);
...@@ -63,21 +71,59 @@ int main(int argc, char *argv[]) { ...@@ -63,21 +71,59 @@ int main(int argc, char *argv[]) {
} }
// Inviando il numero di iterazioni al server // 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 */ // Aspettando l'ACK
// returnStatus = read(simpleSocket, buffer, sizeof(buffer)); 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: "); printf("Inserire il valore da voler inviare al server: ");
scanf("%s", valueToSend); scanf("%s", valueToSend);
write(simpleSocket, valueToSend, strlen(valueToSend)); if (valueToSend[0] == '\0') {
read(simpleSocket, valueToReceive, sizeof(valueToReceive)); fprintf(stderr, "Impossibile inviare una riga vuota!");
printf("\n\nEcho: %s\n", valueToReceive); } else {
close(simpleSocket); 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); 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; return 0;
} }
File added
...@@ -74,25 +74,53 @@ int main(int argc, char *argv[]) { ...@@ -74,25 +74,53 @@ int main(int argc, char *argv[]) {
int clientNameLength = sizeof(clientName); int clientNameLength = sizeof(clientName);
/* wait here */ /* wait here */
while (1) {
char valueToSend[256] = {'\0'};
char valueToRead[256] = {'\0'};
simpleChildSocket = simpleChildSocket =
accept(simpleSocket, (struct sockaddr *)&clientName, &clientNameLength); accept(simpleSocket, (struct sockaddr *)&clientName, &clientNameLength);
if (simpleChildSocket == -1) { if (simpleChildSocket == -1) {
fprintf(stderr, "Cannot accept connections!\n"); fprintf(stderr, "Cannot accept connections!\n");
close(simpleSocket); close(simpleSocket);
exit(1); exit(1);
} }
char bufferRead[256] = {'\0'}; // Leggendo il numero di richieste da svolgere
read(simpleChildSocket, bufferRead, sizeof(bufferRead)); read(simpleChildSocket, valueToRead, sizeof(valueToRead));
int iterations = atoi(valueToRead);
printf("Numero iterazioni: %d\n", iterations);
while (1) { // Mando ACK al Client
// Read message from client snprintf(valueToSend, sizeof(valueToSend), "ACK");
read(simpleChildSocket, bufferRead, sizeof(bufferRead)); write(simpleChildSocket, valueToSend, sizeof(valueToSend));
printf("Received: %s\n", bufferRead);
char valueToSend[256] = {'\0'}; for (int i = 0; i < iterations; ++i) {
snprintf(valueToSend, sizeof(valueToSend), "%s", bufferRead); // 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)); write(simpleChildSocket, valueToSend, sizeof(valueToSend));
close(simpleChildSocket); close(simpleChildSocket);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment