From 753338e657b3a822a924f73f272015bdf2f1defd Mon Sep 17 00:00:00 2001 From: Vinicius Date: Mon, 18 Dec 2023 02:56:22 -0300 Subject: [PATCH] Fix tcp connection --- CMakeLists.txt | 12 +++++-- bin/client | Bin 0 -> 26328 bytes bin/server | Bin 0 -> 22368 bytes include/pipe.h | 9 +++--- src/main_client.c | 13 ++++---- src/main_server.c | 28 ++++++++++------ src/pipe.c | 81 +++++++++++++++++++++------------------------- src/socket.c | 13 +++++--- 8 files changed, 84 insertions(+), 72 deletions(-) create mode 100755 bin/client create mode 100755 bin/server diff --git a/CMakeLists.txt b/CMakeLists.txt index 63225d6..ed3c494 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,5 +5,13 @@ execute_process( COMMAND mkdir -p bin ) -add_executable(./bin/server ./include/socket.h ./include/utils.h ./src/socket.c ./src/utils.c ./src/main_server.c) -add_executable(./bin/client ./include/socket.h ./include/utils.h ./src/socket.c ./src/utils.c ./src/main_client.c) +set(SOURCE_FILES + src/socket.c + src/pipe.c + src/utils.c +) + +include_directories(include) + +add_executable(./bin/server ${SOURCE_FILES} ./src/main_server.c) +add_executable(./bin/client ${SOURCE_FILES} ./src/main_client.c) diff --git a/bin/client b/bin/client new file mode 100755 index 0000000000000000000000000000000000000000..dea2ffec8266f081a223473ffeefd0ef659c6f53 GIT binary patch literal 26328 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 literal 0 HcmV?d00001 diff --git a/bin/server b/bin/server new file mode 100755 index 0000000000000000000000000000000000000000..56da69ac648dd1c5fb68ef2992bdefa6de5a02cb GIT binary patch literal 22368 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 U!X_h=Pycgkg~W7+f`euM1CiD#9{>OV literal 0 HcmV?d00001 diff --git a/include/pipe.h b/include/pipe.h index b929081..c4a04b4 100644 --- a/include/pipe.h +++ b/include/pipe.h @@ -5,11 +5,10 @@ #define NUM_OF_PIPE_DESCRIPTORS 2 #define CHILD_PROCESS 0 + #include + extern int *create_pipe(); extern pid_t fork_process(); - - extern void server_write_pipe(int* descriptors, pid_t child, int buffer_size, int *buffer); - extern void server_read_pipe( int* descriptors, pid_t child, int buffer_size, int *buffer); - extern void client_read_pipe( int* descriptors, pid_t child, int buffer_size, int *buffer); - extern void client_write_pipe(int* descriptors, pid_t child, int buffer_size, int *buffer); + + extern float pingpong_pipe(int* descriptors, pid_t child, int buffer_size, int *buffer); #endif // __PIPE_H__ \ No newline at end of file diff --git a/src/main_client.c b/src/main_client.c index 816a42b..cc79aac 100644 --- a/src/main_client.c +++ b/src/main_client.c @@ -42,8 +42,7 @@ void send_buffer(void *server_address) if(socket_type == TCP_SOCKET_FLAG) send(client_socket, buffer, buffer_size, 0); else sendto(client_socket, buffer, buffer_size, 0, address, server_addr_size); - - receive_buffer(socket_type == UNIX_SOCKET_FLAG ? (void*)&unix_server_address : (void*)&ipv4_server_address); + receive_buffer(server_address); } void controlc_handler() @@ -96,8 +95,6 @@ void attribuite_and_init_socket(int socket_type) descriptors = create_pipe(); child = fork_process(); - server_read_pipe(descriptors, child, buffer_size, buffer); - break; default: @@ -128,12 +125,16 @@ int main(int argc, char** argv) buffer = get_init_buffer(buffer_size); + float sum_elapsed_time_ms = 0.0; + for(int i = 0; i < num_of_read_bytes; i++) { - socket_listen(); + socket_type == PIPE_CONNECTION_FLAG ? elapsed_time_ms = pingpong_pipe(descriptors, child, buffer_size, buffer) : socket_listen(); - printf("%lf\n", (float)(elapsed_time_ms)); + sum_elapsed_time_ms += elapsed_time_ms; } + printf("%lf\n", (float)((sum_elapsed_time_ms)/(num_of_read_bytes))); + return SYSTEM_EXIT_SUCCESS; } diff --git a/src/main_server.c b/src/main_server.c index 0dd150d..411534c 100644 --- a/src/main_server.c +++ b/src/main_server.c @@ -12,7 +12,9 @@ pid_t child; int server_socket, client_socket; -socket_address client_address, server_address; +socket_address client_address; + +void* server_address; int *buffer; size_t buffer_size; @@ -69,19 +71,22 @@ void attribuite_socket_type(int socket_type) { case TCP_SOCKET_FLAG: // TCP SOCKET - server_socket = create_socket(AF_INET, SOCK_STREAM); - config_tcp_upd_server_address(); + server_socket = create_socket(AF_INET, SOCK_STREAM); + socket_address_ipv4 udp_ip_address = config_tcp_upd_server_address(); + server_address = (void *)&udp_ip_address; break; case UDP_SOCKET_FLAG: // UDP SOCKET - server_socket = create_socket(AF_INET, SOCK_DGRAM); - config_tcp_upd_server_address(); + server_socket = create_socket(AF_INET, SOCK_DGRAM); + socket_address_ipv4 tcp_ip_address = config_tcp_upd_server_address(); + server_address = (void *)&tcp_ip_address; break; case UNIX_SOCKET_FLAG: // UNIXDOMAIN SOCKET - server_socket = create_socket(AF_UNIX, SOCK_DGRAM); - config_unixdomain_server_address(); + server_socket = create_socket(AF_UNIX, SOCK_DGRAM); + socket_address_unix unix_address = config_unixdomain_server_address(); + server_address = (void *)&unix_address; break; case PIPE_CONNECTION_FLAG: // PIPE CONNECTION FLAG @@ -114,17 +119,20 @@ void get_args(int argc, char** argv) int main(int argc, char** argv) { + printf("OI0"); get_args(argc, argv); + printf("OI1"); attribuite_socket_type(socket_type); buffer = (int*)malloc(buffer_size*sizeof(int)); - - bind_server((void*)&server_address, socket_type, server_socket); - + printf("OI2"); + //bind_server(server_address, socket_type, server_socket); + printf("OI3"); for(int i = 0; i < num_of_read_bytes; i++) { server_listen(); } + printf("OI4"); return SYSTEM_EXIT_SUCCESS; } diff --git a/src/pipe.c b/src/pipe.c index 5b928c0..8f19606 100644 --- a/src/pipe.c +++ b/src/pipe.c @@ -7,14 +7,14 @@ int *create_pipe() { - int pipe_descriptors[NUM_OF_PIPE_DESCRIPTORS]; + int *pipe_descriptors = (int*)malloc(NUM_OF_PIPE_DESCRIPTORS*sizeof(int)); if(pipe(pipe_descriptors) == PIPE_ERROR_CODE) { panic("Pipe creation failed"); } - return &pipe_descriptors[0]; + return pipe_descriptors; } pid_t fork_process() @@ -29,50 +29,43 @@ pid_t fork_process() return child_pid; } -void client_write_pipe(int* descriptors, pid_t child, int buffer_size, int *buffer) +float pingpong_pipe(int* descriptors, pid_t child, int buffer_size, int *buffer) { - close(descriptors[0]); - write(descriptors[1], buffer, sizeof(descriptors)); - close(descriptors[1]); -} -void client_read_pipe(int* descriptors, pid_t child, int buffer_size, int *buffer) -{ - if (child == CHILD_PROCESS) { - close(descriptors[1]); + int *pipe_client_to_server = create_pipe(); + int *pipe_server_to_client = create_pipe(); + + if (child == CHILD_PROCESS) + { + close(pipe_client_to_server[1]); + close(pipe_server_to_client[0]); + + ssize_t bytes_read; + clock_t start_time = clock(); + bytes_read = read(pipe_client_to_server[0], buffer, sizeof(buffer)); + + write(pipe_server_to_client[1], buffer, bytes_read); + clock_t end_time = clock(); + + close(pipe_client_to_server[0]); + close(pipe_server_to_client[1]); + + return ((float)(end_time - start_time) / (CLOCKS_PER_SEC/1000)); + }else + { + close(pipe_client_to_server[0]); + close(pipe_server_to_client[1]); + + clock_t start_time = clock(); + write(pipe_client_to_server[1], buffer, sizeof(buffer)); - read(descriptors[0], buffer, sizeof(buffer)); - close(descriptors[0]); - }else - { - server_write_pipe(descriptors, child, buffer_size, buffer); + ssize_t bytes_read = read(pipe_server_to_client[0], buffer, sizeof(buffer)); + clock_t end_time = clock(); + + + close(pipe_client_to_server[1]); + close(pipe_server_to_client[0]); + + return ((float)(end_time - start_time) / (CLOCKS_PER_SEC/1000)); } -} - - -void server_read_pipe(int* descriptors, pid_t child, int buffer_size, int *buffer) -{ - - int* received_buffer = (int*)malloc(buffer_size*sizeof(int)); - - if (child == CHILD_PROCESS) - { - close(descriptors[1]); - - read(descriptors[0], received_buffer, sizeof(buffer)); - - close(descriptors[0]); - exit(EXIT_SUCCESS); - }else - { - client_write_pipe(descriptors, child, buffer_size, buffer); - } -} - - -void server_write_pipe(int* descriptors, pid_t child, int buffer_size, int *buffer) -{ - close(descriptors[0]); - write(descriptors[1], buffer, sizeof(buffer)); - close(descriptors[1]); } \ No newline at end of file diff --git a/src/socket.c b/src/socket.c index 5c9c3f9..8194e01 100644 --- a/src/socket.c +++ b/src/socket.c @@ -14,7 +14,7 @@ int create_socket(int sin_family, int sock) { int server_socket; - server_socket = socket(sin_family, sock, -1); + server_socket = socket(sin_family, sock, 0); if(server_socket == SOCKET_ERROR_CODE) { @@ -45,11 +45,13 @@ socket_address_ipv4 config_tcp_upd_server_address() void connect_to_server(void *server_address, int client_socket) { - struct sockaddr* address = (struct sockaddr*)&server_address; + socket_address_ipv4 server = config_tcp_upd_server_address(); + + struct sockaddr* address = (struct sockaddr*)&server; int connection_response = connect(client_socket, address, - (socklen_t)sizeof(server_address) + (socklen_t)sizeof(server) ); if(connection_response == SOCKET_ERROR_CODE) @@ -64,9 +66,10 @@ void connect_to_server(void *server_address, int client_socket) void bind_server(void *server_address, int socket_type, int server_socket) { - struct sockaddr* address = (struct sockaddr*)&server_address; + socket_address_ipv4 server = config_tcp_upd_server_address(); + struct sockaddr* address = (struct sockaddr*)&server; - int server_bind_response = bind(server_socket, address, sizeof(server_address)); + int server_bind_response = bind(server_socket, address, sizeof(server)); if (socket_type == UNIX_SOCKET_FLAG) unlink((const char*)address);