diff --git a/.vscode/settings.json b/.vscode/settings.json index a0aef3b..d4dcb35 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,8 @@ { "files.associations": { "unistd.h": "c", - "stdio.h": "c" + "stdio.h": "c", + "in.h": "c", + "time.h": "c" } } \ No newline at end of file diff --git a/client b/client deleted file mode 100755 index fa20f62..0000000 Binary files a/client and /dev/null differ diff --git a/client.c b/client.c index 4801f5c..92a318f 100644 --- a/client.c +++ b/client.c @@ -7,19 +7,16 @@ #include #include - #define TRUE 1 #define FALSE 0 #define HOST_IP "127.0.0.1" // IPV4 loopback address -#define SERVER_PORT 8077 // Server port -#define BUFFER_SIZE 8192 // Default size (64bytes) to (8Kbytes) +#define SERVER_PORT 8179 // 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 - -char sended_buffer[BUFFER_SIZE]; +#define KB 1024 typedef struct sockaddr_in socket_address; @@ -68,11 +65,6 @@ void connect_to_server(int client_socket, socket_address server_address) } } -void init_buffer() -{ - memset(&sended_buffer, '0', BUFFER_SIZE); -} - int is_server_down() { char* full_command = (char*)malloc(1000*sizeof(char)); @@ -90,11 +82,11 @@ int is_server_down() system(full_command) == PORT_USED_CODE ? FALSE : TRUE; } -int receive_buffer(int client_socket) +int receive_buffer(int client_socket, int buffer_size) { if(!is_server_down()) { - char received_buffer[BUFFER_SIZE]; // Buffer will be send by server to client + char received_buffer[buffer_size]; // Buffer will be send by server to client int bytes_read = recv(client_socket, received_buffer, sizeof(received_buffer), 0); if(bytes_read == SOCKET_ERROR_CODE) @@ -104,8 +96,18 @@ int receive_buffer(int client_socket) }else { received_buffer[bytes_read] = '\0'; // Buffer string finalized with '\0', - printf("Receiving [PONG] %f KB\n", ((float)BUFFER_SIZE/(float)1024)); - printf("\nServer message received successfully!\n"); + + float size_in_kb = ((float)buffer_size/(float)KB); + + if(buffer_size >= KB){ + printf("[CLIENT] - Receive [PONG] %dKB", (buffer_size/KB)); + }else{ + + printf("[CLIENT] - Receive [PONG] %fKB", ((float)buffer_size/(float)KB)); + } + + printf("\n[CLIENT] - Server message received successfully!\n\n"); + } }else{ printf("Server is down!"); @@ -113,18 +115,19 @@ int receive_buffer(int client_socket) } } -void send_buffer(int client_socket) +void send_buffer(int client_socket, char sended_buffer[], int buffer_size) { - clock_t init_time, end_time, total_time; - init_buffer(sended_buffer); - - - printf("Sending [PING] %f KB\n", ((float)BUFFER_SIZE/(float)1024)); - - + 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, strlen(sended_buffer), 0); - receive_buffer(client_socket); + receive_buffer(client_socket, buffer_size); } @@ -134,7 +137,7 @@ void controlc_handler() exit(SYSTEM_EXIT_SUCCESS); } -void socket_listen(int client_socket) +void socket_listen(int client_socket, char sended_buffer[], int buffer_size) { if(signal(SIGINT, controlc_handler) == SIG_ERR) @@ -143,27 +146,38 @@ void socket_listen(int client_socket) exit(SYSTEM_EXIT_FAILED); } - send_buffer(client_socket); + send_buffer(client_socket, sended_buffer, buffer_size); } -int main(void) +int main(int argc, char** argv) { - + + int buffer_size = (int)atoi(argv[1]); + + char sended_buffer[buffer_size]; + memset(&sended_buffer, '0', buffer_size); + 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); + 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("Time: %.2f ms\n", elapsed_time_ms); + printf("Time: %.2f ms\n\n", elapsed_time_ms); + + printf("==================================================================\n"); return SYSTEM_EXIT_SUCCESS; diff --git a/makefile b/makefile new file mode 100644 index 0000000..e55a264 --- /dev/null +++ b/makefile @@ -0,0 +1,18 @@ +CC=gcc + +all: + @$(CC) client.c -o client + @$(CC) server.c -o server + @./server $(buffer_size)& + @./client $(buffer_size) + +clean: + @rm server client + +run_client: + @$(CC) client.c -o client + @./client $(buffer_size)& + +run_server: + @$(CC) server.c -o server + @./server $(buffer_size)& \ No newline at end of file diff --git a/server b/server deleted file mode 100755 index c12b2d3..0000000 Binary files a/server and /dev/null differ diff --git a/server.c b/server.c index 920d7de..382efd3 100644 --- a/server.c +++ b/server.c @@ -6,10 +6,10 @@ #include #include +#define FALSE 0 #define TRUE 1 #define HOST_IP "127.0.0.1" // IPV4 loopback address -#define SERVER_PORT 8077 // Server port -#define BUFFER_SIZE 8192 // Default size (64bytes) to (8Kbytes) +#define SERVER_PORT 8179 // Server port #define MAX_CONNECTIONS 2 // 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 @@ -17,8 +17,6 @@ typedef struct sockaddr_in socket_address; -char buffer[BUFFER_SIZE]; - int create_socket() { int server_socket; @@ -72,32 +70,39 @@ int accept_connection(int client_socket, int server_socket, socket_address clien exit(SYSTEM_EXIT_FAILED); }else{ - printf("Client connected: %s:%d\n", inet_ntoa(client_address.sin_addr), ntohs(client_address.sin_port)); + 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) +void send_buffer(int client_socket, char buffer[]) { - printf("Sending [PONG]\n"); + printf("\n[SERVER] - Sending [PONG]\n\n"); send(client_socket, buffer, strlen(buffer), 0); } -void receive_buffer(int client_socket) +void receive_buffer(int client_socket, char buffer[], int buffer_size) { int bytes_read; + int lock = FALSE; - printf("Receiving [PING]\n"); + char received_buffer[buffer_size]; - while((bytes_read = recv(client_socket, buffer, sizeof(buffer), 0)) > 0) + printf("[SERVER] - Receiving [PING]\n"); + + while((bytes_read = recv(client_socket, received_buffer, sizeof(received_buffer), 0)) > 0) { - buffer[bytes_read] = '\0'; - printf("Client message received successfully!\n"); + if(!lock){ - send_buffer(client_socket); + lock = TRUE; + received_buffer[bytes_read] = '\0'; + printf("[SERVER] - Client message received successfully!"); + + send_buffer(client_socket, received_buffer); + } } @@ -110,7 +115,7 @@ void controlc_handler() } -void server_listen(int client_socket, int server_socket, socket_address client_address, socklen_t client_addr_len) +void server_listen(int client_socket, int server_socket, socket_address client_address, socklen_t client_addr_len, char buffer[], int buffer_size) { if (listen(server_socket, MAX_CONNECTIONS) == SOCKET_ERROR_CODE) @@ -120,25 +125,30 @@ void server_listen(int client_socket, int server_socket, socket_address client_a exit(SYSTEM_EXIT_FAILED); } - printf("Server TCP listening on port %d...\n", SERVER_PORT); + 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); - } + //if(signal(SIGINT, controlc_handler) == SIG_ERR) + //{ + // perror("Signal create error!"); + // exit(SYSTEM_EXIT_FAILED); + //} - while(TRUE) - { + //while(TRUE) + //{ client_socket = accept_connection(client_socket, server_socket, client_address, client_addr_len); - receive_buffer(client_socket); - } + receive_buffer(client_socket, buffer, buffer_size); + //} } -int main(void) +int main(int argc, char** argv) { + + int buffer_size = (int)atoi(argv[1]); + + char buffer[buffer_size]; + int server_socket, client_socket; server_socket = create_socket(); @@ -150,5 +160,5 @@ int main(void) bind_server(server_socket, server_address); - server_listen(client_socket, server_socket, client_address, client_addr_len); + server_listen(client_socket, server_socket, client_address, client_addr_len, buffer, buffer_size); }