From 1418cf68809c17f0cc0d679f4cd69c0d371f3c06 Mon Sep 17 00:00:00 2001 From: HappyTanuki Date: Sat, 26 Apr 2025 17:21:54 +0900 Subject: [PATCH] =?UTF-8?q?wsamanager=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Server/src/server.cpp | 4 ++++ impl/Socket/Socket.cpp | 16 +--------------- include/Socket/Socket.hpp | 2 +- include/Socket/WSAManager.hpp | 21 +++++++++++++++++++++ include/precomp.hpp | 1 + 5 files changed, 28 insertions(+), 16 deletions(-) create mode 100644 include/Socket/WSAManager.hpp diff --git a/Server/src/server.cpp b/Server/src/server.cpp index 563f709..e0af36b 100644 --- a/Server/src/server.cpp +++ b/Server/src/server.cpp @@ -1,5 +1,6 @@ #include "Socket/TCPSocket.hpp" #include "Socket/Log.hpp" +#include "Socket/WSAManager.hpp" #include "Utils/ConfigManager.hpp" #include "Utils/Thread.hpp" #include "Utils/StringTokenizer.hpp" @@ -9,6 +10,9 @@ void _TCPClient(Chattr::TCPSocket sock, Chattr::Address addr); int main() { +#ifdef _WIN32 + struct Chattr::WSAManager wsaManager; +#endif auto config = Chattr::ConfigManager::load(); Chattr::log::setDefaultLogger(config.logLevel, config.logFileName, config.logfileSize, config.logfileCount); diff --git a/impl/Socket/Socket.cpp b/impl/Socket/Socket.cpp index 4ce8244..b02fe8e 100644 --- a/impl/Socket/Socket.cpp +++ b/impl/Socket/Socket.cpp @@ -4,20 +4,7 @@ namespace Chattr { -Socket::Socket() { -#ifdef _WIN32 - WSADATA wsa; - if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) - log::critical("WSAStartup()"); -#endif -} - Socket::Socket(int domain, int type, int protocol) { -#ifdef _WIN32 - WSADATA wsa; - if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) - log::critical("WSAStartup()"); -#endif init(domain, type, protocol); } @@ -42,8 +29,7 @@ void Socket::destruct() { if (!valid_) return; #ifdef _WIN32 - closesocket(sock_); - WSACleanup(); + ::closesocket(sock_); #elif __linux__ ::close(sock_); #endif diff --git a/include/Socket/Socket.hpp b/include/Socket/Socket.hpp index adc9a0e..d4320d3 100644 --- a/include/Socket/Socket.hpp +++ b/include/Socket/Socket.hpp @@ -6,7 +6,7 @@ namespace Chattr { class Socket { public: - Socket(); + Socket() = default; Socket(int domain, int type, int protocol); ~Socket(); diff --git a/include/Socket/WSAManager.hpp b/include/Socket/WSAManager.hpp new file mode 100644 index 0000000..86a6eaa --- /dev/null +++ b/include/Socket/WSAManager.hpp @@ -0,0 +1,21 @@ +#pragma once +#include "precomp.hpp" +#include "Socket/Log.hpp" + +#ifdef _WIN32 +namespace Chattr { +struct WSAManager { + + WSAManager() { + WSADATA wsa; + if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) + log::critical("WSAStartup()"); + } + + ~WSAManager() { + WSACleanup(); + } + +}; +} +#endif \ No newline at end of file diff --git a/include/precomp.hpp b/include/precomp.hpp index fedb21d..3da209f 100644 --- a/include/precomp.hpp +++ b/include/precomp.hpp @@ -5,6 +5,7 @@ #include #include #include +#define in_addr_t ULONG #elif __linux__ #include #include