From 738d8d11ac579496f8bd53b7bd0824c4f71babe4 Mon Sep 17 00:00:00 2001 From: Vinicius Date: Wed, 20 Sep 2023 19:43:05 -0300 Subject: [PATCH] Fix buffer bugs --- client | Bin 17160 -> 0 bytes client.c | 127 +++++++++++++++++++++++------------------------------ graphic.py | 66 +++++++++++++++++++++++++++- makefile | 6 ++- server | Bin 17024 -> 0 bytes server.c | 54 +++++++---------------- 6 files changed, 141 insertions(+), 112 deletions(-) delete mode 100755 client delete mode 100755 server diff --git a/client b/client deleted file mode 100755 index 545f7898454b7086b4a9612e16f1bc7664428eb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17160 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 diff --git a/client.c b/client.c index 1d9311f..6532db9 100644 --- a/client.c +++ b/client.c @@ -7,17 +7,24 @@ #include #include +#define N 10000 #define TRUE 1 #define FALSE 0 #define HOST_IP "127.0.0.1" // IPV4 loopback address -#define SERVER_PORT 8294 // Server port +#define SERVER_PORT 8099 // Server port #define PORT_USED_CODE 256 #define SOCKET_ERROR_CODE -1 // Socket create, Connection server, Receive buffer to server code error #define SYSTEM_EXIT_FAILED 1 // Operating System program error response #define SYSTEM_EXIT_SUCCESS 0 // Operating System program success response + #define KB 1024 +float times[N]; + +float send_elapsed_time_ms = 0.00; +float receive_elapsed_time_ms = 0.00; + typedef struct sockaddr_in socket_address; int init_socket() @@ -32,6 +39,8 @@ int init_socket() perror("Socket create failed!\n"); exit(SYSTEM_EXIT_FAILED); } + + return client_socket; } socket_address config_server_address() @@ -45,7 +54,6 @@ socket_address config_server_address() return server_address; } - void connect_to_server(int client_socket, socket_address server_address) { struct sockaddr* address = (struct sockaddr*)&server_address; @@ -60,65 +68,23 @@ void connect_to_server(int client_socket, socket_address server_address) perror("Server connection error\n"); close(client_socket); exit(SYSTEM_EXIT_FAILED); - }{ - printf("Server connection successfully\n\n"); } } -int is_server_down() -{ - char* full_command = (char*)malloc(1000*sizeof(char)); - - char* base_command = "lsof -i 4@"; - char str[5]; - sprintf(str, "%d", SERVER_PORT); - - strcat(full_command, base_command); - strcat(full_command,HOST_IP); - strcat(full_command, " -i:"); - strcat(full_command, str); - strcat(full_command, " >/dev/null 2>&1"); - - system(full_command) == PORT_USED_CODE ? FALSE : TRUE; -} - - int receive_buffer(int client_socket, int buffer_size) { - int bytes_read; + ssize_t bytes_read; - char received_buffer[buffer_size]; + int received_buffer[buffer_size]; - printf("[CLIENT] - Receiving [PONG]\n"); + recv(client_socket, received_buffer, buffer_size, 0); - while((bytes_read = recv(client_socket, received_buffer, buffer_size, 0)) > 0) - { - - received_buffer[bytes_read] = '\0'; - - printf("VALUE RECEIVED [ %s ]", received_buffer); - - printf("\n[CLIENT] - Server message received successfully!"); - - return 0; - } - return 1; } -void send_buffer(int client_socket, char sended_buffer[], int buffer_size) -{ - - float size_in_kb = ((float)buffer_size/(float)KB); - - if(buffer_size >= KB){ - printf("[CLIENT] - Sending [PING] %dKB\n\n", (buffer_size/KB)); - }else{ - printf("[CLIENT] - Sending [PING] %fKB\n\n", ((float)buffer_size/(float)KB)); - } - - send(client_socket, sended_buffer, buffer_size, 0); - +void send_buffer(int client_socket, int buffer[], size_t buffer_size) +{ + send(client_socket, buffer, buffer_size, 0); } void controlc_handler() @@ -127,7 +93,7 @@ void controlc_handler() exit(SYSTEM_EXIT_SUCCESS); } -void socket_listen(int client_socket, char sended_buffer[], int buffer_size) +void socket_listen(int client_socket, int buffer[], size_t buffer_size) { if(signal(SIGINT, controlc_handler) == SIG_ERR) @@ -136,45 +102,62 @@ void socket_listen(int client_socket, char sended_buffer[], int buffer_size) exit(SYSTEM_EXIT_FAILED); } - while(TRUE){ - send_buffer(client_socket, sended_buffer, buffer_size); - receive_buffer(client_socket, buffer_size); - } + clock_t start_send_time = clock(); + send_buffer(client_socket, buffer, buffer_size); + clock_t end_send_time = clock(); + + clock_t send_difference = (end_send_time - start_send_time); + send_elapsed_time_ms = ((float)send_difference / (CLOCKS_PER_SEC/1000)); + + clock_t start_receive_time = clock(); + receive_buffer(client_socket, buffer_size); + clock_t end_receive_time = clock(); + + clock_t receive_difference = (end_receive_time - start_receive_time); + receive_elapsed_time_ms = ((float)receive_difference / (CLOCKS_PER_SEC/1000)); } +float calculate() +{ + + float average_total = 0.00; + + for(int i = 0; i < N; i++){ + average_total += times[i]; + } + + return average_total; +} + + int main(int argc, char** argv) { - int buffer_size = (int)atoi(argv[1]); + size_t buffer_size = (int)atoi(argv[1]); - char sended_buffer[buffer_size]; + int buffer[buffer_size]; for(int i = 0; i < buffer_size; i++) { - sended_buffer[i] = '0'; + buffer[i] = (int)(i % 255); } - + int client_socket = init_socket(); socket_address server_address; server_address = config_server_address(); - printf("\n==================================================================\n"); - printf(" PING PONG PROGRAM \n"); - printf("==================================================================\n\n"); - connect_to_server(client_socket, server_address); - clock_t start = clock(); - socket_listen(client_socket, sended_buffer, buffer_size); - clock_t end = clock(); - - double elapsed_time_ms = (double)(end - start) * 1000.0 / CLOCKS_PER_SEC; - - printf("\nTime: %.2f ms\n\n", elapsed_time_ms); - - printf("==================================================================\n"); + for(int i = 0; i < N; i++){ + socket_listen(client_socket, buffer, buffer_size); + times[i] = send_elapsed_time_ms + receive_elapsed_time_ms; + } + float average = calculate(); + + printf("%lf\n", (float)(average/(float)N)); + return SYSTEM_EXIT_SUCCESS; } \ No newline at end of file diff --git a/graphic.py b/graphic.py index dd3a1da..70627e8 100644 --- a/graphic.py +++ b/graphic.py @@ -1,7 +1,71 @@ +import os +from decimal import Decimal, getcontext import matplotlib.pyplot as plt +valores = [] + +getcontext().prec = 50 + +def rm_files(): + for i in range(1,9): + os.system(f"rm -r time_file{i} >/dev/null 2>&1") + +def get_time(filename): + + f = open(f"{filename}", "r") + + try: + return Decimal(str(f.read())) + + except Exception: + print("[ERRO] A porta está em uso!") + exit(1) + +rm_files() + +os.system('make run_server buffer_size=64 >/dev/null 2>&1') +os.system('make run_client buffer_size=64 > time_file1') +os.system('sudo kill -9 $(sudo lsof -t -i:8099) >/dev/null 2>&1') +valores.append(get_time("time_file1")) + +os.system('make run_server buffer_size=128 >/dev/null 2>&1') +os.system('make run_client buffer_size=128 > time_file2') +os.system('sudo kill -9 $(sudo lsof -t -i:8099) >/dev/null 2>&1') +valores.append(get_time("time_file2")) + +os.system('make run_server buffer_size=256 >/dev/null 2>&1') +os.system('make run_client buffer_size=256 > time_file3') +os.system('sudo kill -9 $(sudo lsof -t -i:8099) >/dev/null 2>&1') +valores.append(get_time("time_file3")) + +os.system('make run_server buffer_size=512 >/dev/null 2>&1') +os.system('make run_client buffer_size=512 > time_file4') +os.system('sudo kill -9 $(sudo lsof -t -i:8099) >/dev/null 2>&1') +valores.append(get_time("time_file4")) + +os.system('make run_server buffer_size=1024 >/dev/null 2>&1') +os.system('make run_client buffer_size=1024 > time_file5') +os.system('sudo kill -9 $(sudo lsof -t -i:8099) >/dev/null 2>&1') +valores.append(get_time("time_file5")) + +os.system('make run_server buffer_size=2048 >/dev/null 2>&1') +os.system('make run_client buffer_size=2048 > time_file6') +os.system('sudo kill -9 $(sudo lsof -t -i:8099) >/dev/null 2>&1') +valores.append(get_time("time_file6")) + +os.system('make run_server buffer_size=4096 >/dev/null 2>&1') +os.system('make run_client buffer_size=4096 > time_file7') +os.system('sudo kill -9 $(sudo lsof -t -i:8099) >/dev/null 2>&1') +valores.append(get_time("time_file7")) + +os.system('make run_server buffer_size=8192 >/dev/null 2>&1') +os.system('make run_client buffer_size=8192 > time_file8') +os.system('sudo kill -9 $(sudo lsof -t -i:8099) >/dev/null 2>&1') +valores.append(get_time("time_file8")) + +rm_files() + categorias = ["0,064KB","0,128KB","0,256KB","0,512KB","1KB","2KB","4KB","8KB"] -valores = [0.13,0.11,0.13,0.12,0.13,0.13,0.13,0.14] plt.bar(categorias, valores, color='purple', width=0.8) diff --git a/makefile b/makefile index 98cb24b..e5ff3d8 100644 --- a/makefile +++ b/makefile @@ -12,7 +12,11 @@ clean: run_client: @$(CC) client.c -o client @./client $(buffer_size) + @rm server client run_server: @$(CC) server.c -o server - @./server $(buffer_size) \ No newline at end of file + @./server $(buffer_size)& + +graphic: + @python graphic.py \ No newline at end of file diff --git a/server b/server deleted file mode 100755 index 3987619e2724762e5e50b4aa81b78f151b64b30d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17024 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 diff --git a/server.c b/server.c index 350e64b..0b215b9 100644 --- a/server.c +++ b/server.c @@ -9,11 +9,12 @@ #define FALSE 0 #define TRUE 1 #define HOST_IP "127.0.0.1" // IPV4 loopback address -#define SERVER_PORT 8294 // Server port -#define MAX_CONNECTIONS 2 // Num max client connected simultaneously +#define SERVER_PORT 8099 // Server port +#define MAX_CONNECTIONS 10 // Num max client connected simultaneously #define SOCKET_ERROR_CODE -1 // Socket create, Connection server, Receive buffer to server code error #define SYSTEM_EXIT_FAILED 1 // Operating System program error response #define SYSTEM_EXIT_SUCCESS 0 // Operating System program success response +#define KB 1024 typedef struct sockaddr_in socket_address; @@ -43,10 +44,10 @@ socket_address config_server_address() return server_address; } -void bind_server(int server_socket, socket_address server_address, int buffer_size) +void bind_server(int server_socket, socket_address server_address) { - struct sockaddr *address = (struct sockaddr*)&server_address; + struct sockaddr* address = (struct sockaddr*)&server_address; int server_bind_response = bind(server_socket, address, sizeof(server_address)); @@ -70,37 +71,29 @@ int accept_connection(int client_socket, int server_socket, socket_address clien exit(SYSTEM_EXIT_FAILED); }else{ - printf("[SERVER] - Client connected: %s:%d\n", inet_ntoa(client_address.sin_addr), ntohs(client_address.sin_port)); return client_socket; } } -void send_buffer(int client_socket, char buffer[], char buffer_size) +void send_buffer(int client_socket, int buffer[], int buffer_size) { - printf("\n[SERVER] - Sending [PONG]\n"); send(client_socket, buffer, buffer_size, 0); } -int receive_buffer(int client_socket, char buffer[], int buffer_size) +int receive_buffer(int client_socket, int buffer_size) { - int bytes_read; + ssize_t bytes_read; - char received_buffer[buffer_size]; - - printf("[SERVER] - Receiving [PING]\n"); + int received_buffer[buffer_size]; while((bytes_read = recv(client_socket, received_buffer, buffer_size, 0)) > 0) { received_buffer[bytes_read] = '\0'; - printf("VALUE RECEIVED [ %s ]", received_buffer); - - printf("\n[SERVER] - Client message received successfully!"); - send_buffer(client_socket, received_buffer, buffer_size); } } @@ -112,7 +105,7 @@ void controlc_handler() } -void server_listen(int client_socket, int server_socket, socket_address client_address, socklen_t client_addr_len, char buffer[], int buffer_size) +void server_listen(int client_socket, int server_socket, socket_address client_address, socklen_t client_addr_len, int buffer_size) { if (listen(server_socket, MAX_CONNECTIONS) == SOCKET_ERROR_CODE) @@ -124,30 +117,15 @@ void server_listen(int client_socket, int server_socket, socket_address client_a printf("[SERVER] - Server TCP listening on port %d...\n", SERVER_PORT); - //if(signal(SIGINT, controlc_handler) == SIG_ERR) - //{ - // perror("Signal create error!"); - // exit(SYSTEM_EXIT_FAILED); - //} - - char received_buffer[buffer_size]; - - - while(TRUE) - { - client_socket = accept_connection(client_socket, server_socket, client_address, client_addr_len); - - receive_buffer(client_socket, buffer, buffer_size); - } - + client_socket = accept_connection(client_socket, server_socket, client_address, client_addr_len); + receive_buffer(client_socket, buffer_size); } int main(int argc, char** argv) { - int buffer_size = (int)atoi(argv[1]); - - char buffer[buffer_size]; + size_t buffer_size = 8192; + int buffer[buffer_size]; int server_socket, client_socket; @@ -158,7 +136,7 @@ int main(int argc, char** argv) server_address = config_server_address(); - bind_server(server_socket, server_address, buffer_size); + bind_server(server_socket, server_address); - server_listen(client_socket, server_socket, client_address, client_addr_len, buffer, buffer_size); + server_listen(client_socket, server_socket, client_address, client_addr_len, buffer_size); }