diff --git a/.gitignore b/.gitignore index 42dea9d..6f8b904 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ # Prerequisites *.d +*.vscode/settings.json +.vscode/settings.json # Object files *.o *.ko diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 88a1184..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "files.associations": { - "unistd.h": "c", - "stdio.h": "c", - "in.h": "c", - "time.h": "c", - "signal.h": "c", - "string.h": "c", - "stdlib.h": "c", - "inet.h": "c", - "un.h": "c" - } -} \ No newline at end of file diff --git a/bin/client b/bin/client index d3458fc..6454ae7 100755 Binary files a/bin/client and b/bin/client differ diff --git a/bin/server b/bin/server index c1da27e..d23a0f2 100755 Binary files a/bin/server and b/bin/server differ diff --git a/data/time_file1 b/data/time_file1 deleted file mode 100644 index e5b7482..0000000 --- a/data/time_file1 +++ /dev/null @@ -1,3 +0,0 @@ -make[1]: Entrando no diretório '/home/silva/pingpong' -0.000912 -make[1]: Saindo do diretório '/home/silva/pingpong' diff --git a/dependences.dot b/dependences.dot deleted file mode 100644 index ff31cd4..0000000 --- a/dependences.dot +++ /dev/null @@ -1,27 +0,0 @@ -digraph "pingpong" { -node [ - fontsize = "12" -]; -subgraph clusterLegend { - label = "Legend"; - color = black; - edge [ style = invis ]; - legendNode0 [ label = "Executable", shape = egg ]; - legendNode1 [ label = "Static Library", shape = octagon ]; - legendNode2 [ label = "Shared Library", shape = doubleoctagon ]; - legendNode3 [ label = "Module Library", shape = tripleoctagon ]; - legendNode4 [ label = "Interface Library", shape = pentagon ]; - legendNode5 [ label = "Object Library", shape = hexagon ]; - legendNode6 [ label = "Unknown Library", shape = septagon ]; - legendNode7 [ label = "Custom Target", shape = box ]; - legendNode0 -> legendNode1 [ style = solid ]; - legendNode0 -> legendNode2 [ style = solid ]; - legendNode0 -> legendNode3; - legendNode1 -> legendNode4 [ label = "Interface", style = dashed ]; - legendNode2 -> legendNode5 [ label = "Private", style = dotted ]; - legendNode3 -> legendNode6 [ style = solid ]; - legendNode0 -> legendNode7; -} - "node0" [ label = "./bin/client", shape = egg ]; - "node1" [ label = "./bin/server", shape = egg ]; -} diff --git a/dependences.png b/dependences.png deleted file mode 100644 index 72ffa9d..0000000 Binary files a/dependences.png and /dev/null differ diff --git a/src/client.c b/src/client.c index 861e2d1..c9eff84 100644 --- a/src/client.c +++ b/src/client.c @@ -59,7 +59,7 @@ void panic(char* message) int init_socket() { - int client_socket = socket(sin_family, sock, IPPROTO_TCP); + int client_socket = socket(sin_family, sock, -1); if(client_socket == SOCKET_ERROR_CODE) { @@ -116,28 +116,18 @@ int receive_buffer(int client_socket, int buffer_size) socklen_t* server_addr_size = socket_type == UNIX_SOCKET_FLAG ? (socklen_t*)sizeof(server_address.socket_unix) : (socklen_t*)sizeof(server_address.socket_ipv4); recvfrom(client_socket, received_buffer, buffer_size, 0, address, server_addr_size); } - - for(int i = 0; i < buffer_size; i++) - { - printf("%d", received_buffer[i]); - } - printf("\nRECEBIDO\n"); } -void send_buffer(int client_socket, int buffer[], size_t buffer_size) +void send_buffer(int client_socket, int* buffer, size_t buffer_size) { - for(int i = 0; i < num_of_read_bytes; i++) - { - printf("ENVIO %d\n", i); + + struct sockaddr* address = socket_type == UNIX_SOCKET_FLAG ? (struct sockaddr*)&server_address.socket_unix : (struct sockaddr*)&server_address.socket_ipv4; + socklen_t server_addr_size = socket_type == UNIX_SOCKET_FLAG ? (socklen_t)sizeof(server_address.socket_unix) : (socklen_t)sizeof(server_address.socket_ipv4); - struct sockaddr* address = socket_type == UNIX_SOCKET_FLAG ? (struct sockaddr*)&server_address.socket_unix : (struct sockaddr*)&server_address.socket_ipv4; - socklen_t server_addr_size = socket_type == UNIX_SOCKET_FLAG ? (socklen_t)sizeof(server_address.socket_unix) : (socklen_t)sizeof(server_address.socket_ipv4); + 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); - 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(client_socket, buffer_size); - } + receive_buffer(client_socket, buffer_size); } void controlc_handler() @@ -146,7 +136,7 @@ void controlc_handler() exit(SYSTEM_EXIT_SUCCESS); } -void socket_listen(int client_socket, int buffer[], size_t buffer_size) +void socket_listen(int client_socket, int* buffer, size_t buffer_size) { if(signal(SIGINT, controlc_handler) == SIG_ERR) @@ -216,8 +206,9 @@ int main(int argc, char** argv) get_args(argc, argv); attribuite_socket_type(socket_type); - int buffer[buffer_size]; + int* buffer = (int*)malloc(buffer_size*sizeof(int)); + for(int i = 0; i < buffer_size; i++) { buffer[i] = (int)(i % 255); @@ -229,9 +220,12 @@ int main(int argc, char** argv) connect_to_server(client_socket); - socket_listen(client_socket, buffer, buffer_size); + for(int i = 0; i < num_of_read_bytes; i++) + { + socket_listen(client_socket, buffer, buffer_size); + + printf("%lf\n", (float)(elapsed_time_ms)); + } - printf("%lf\n", (float)(elapsed_time_ms)); - return SYSTEM_EXIT_SUCCESS; } diff --git a/src/server.c b/src/server.c index 55d597a..63c27b6 100644 --- a/src/server.c +++ b/src/server.c @@ -53,7 +53,7 @@ int create_socket() { int server_socket; - server_socket = socket(sin_family, sock, IPPROTO_TCP); + server_socket = socket(sin_family, sock, -1); if(server_socket == SOCKET_ERROR_CODE) { @@ -112,7 +112,7 @@ int accept_connection(int client_socket, int server_socket) } } -void send_buffer(int client_socket, int buffer[], int buffer_size) +void send_buffer(int client_socket, int* buffer, int buffer_size) { socklen_t client_addr_len = socket_type == UNIX_SOCKET_FLAG ? sizeof(client_address.socket_ipv4) : sizeof(client_address.socket_unix); struct sockaddr *address = socket_type == UNIX_SOCKET_FLAG ? (struct sockaddr*)&client_address.socket_unix : (struct sockaddr*)&client_address.socket_ipv4; @@ -129,19 +129,14 @@ int receive_buffer(int client_socket, int buffer_size) struct sockaddr *address = socket_type == UNIX_SOCKET_FLAG ? (struct sockaddr*)&client_address.socket_unix : (struct sockaddr*)&client_address.socket_ipv4; int received_buffer[buffer_size]; - for(int i = 0; i < num_of_read_bytes; i++) + while((bytes_read = socket_type == UNIX_SOCKET_FLAG ? recv(client_socket, received_buffer, buffer_size, 0) : recvfrom(client_socket, received_buffer, buffer_size, 0, address, client_addr_len)) > 0) { - - while((bytes_read = socket_type == UNIX_SOCKET_FLAG ? recv(client_socket, received_buffer, buffer_size, 0) : recvfrom(client_socket, received_buffer, buffer_size, 0, address, client_addr_len)) > 0) - { - send_buffer(client_socket, received_buffer, buffer_size); - } + send_buffer(client_socket, received_buffer, buffer_size); } } void controlc_handler() { - printf("\nProgram finished!\n"); exit(SYSTEM_EXIT_SUCCESS); } @@ -154,8 +149,6 @@ void server_listen(int client_socket, int server_socket, int buffer_size) close(server_socket); panic("Listening mode error"); } - - printf("[SERVER] - Server TCP listening on port %d...\n", SERVER_PORT); client_socket = accept_connection(client_socket, server_socket); receive_buffer(client_socket, buffer_size); @@ -212,8 +205,8 @@ int main(int argc, char** argv) get_args(argc, argv); attribuite_socket_type(socket_type); - int buffer[buffer_size]; - + int* buffer = (int*)malloc(buffer_size*sizeof(int)); + int server_socket, client_socket; server_socket = create_socket(); @@ -222,7 +215,10 @@ int main(int argc, char** argv) bind_server(server_socket); - server_listen(client_socket, server_socket, buffer_size); + for(int i = 0; i < num_of_read_bytes; i++) + { + server_listen(client_socket, server_socket, buffer_size); + } return SYSTEM_EXIT_SUCCESS; }