From 470878e3b2521f98cfd6e378286abe9ba3504eb3 Mon Sep 17 00:00:00 2001 From: Vinicius Date: Mon, 18 Dec 2023 03:33:48 -0300 Subject: [PATCH] Fix bind server bug --- CMakeLists.txt | 6 ++++++ bin/client | Bin 26328 -> 22168 bytes bin/server | Bin 22368 -> 22328 bytes src/main | Bin 0 -> 18272 bytes src/main_client.c | 20 +++++++++++--------- src/main_server.c | 10 +++------- src/socket.c | 11 ++++------- 7 files changed, 24 insertions(+), 23 deletions(-) create mode 100755 src/main diff --git a/CMakeLists.txt b/CMakeLists.txt index ed3c494..ea7bae9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,12 @@ set(SOURCE_FILES src/utils.c ) +set(CMAKE_CXX_STANDARD 11) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") + +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -march=native") + include_directories(include) add_executable(./bin/server ${SOURCE_FILES} ./src/main_server.c) diff --git a/bin/client b/bin/client index dea2ffec8266f081a223473ffeefd0ef659c6f53..3232dcf1c4b1aa0f1286d72c7dd4f9048d2fbc90 100755 GIT binary patch literal 22168 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 Qa_M)>O>g5RD)57rLA}~nM{&-Br|d5jsyh_ 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 diff --git a/bin/server b/bin/server index 56da69ac648dd1c5fb68ef2992bdefa6de5a02cb..14f5cffb223480f558a57852dd3a5de334be4ba3 100755 GIT binary patch delta 4994 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 Ji^^vW|1U#T3HJa1 delta 5318 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 S1~bZZ8eUk%Hjv|{N&f>yhe)dc diff --git a/src/main b/src/main new file mode 100755 index 0000000000000000000000000000000000000000..6f3487a18fea34a82c9dfee309bb0cb84c961430 GIT binary patch literal 18272 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