#include "Socket/TCPSocket.hpp" #include "Socket/Log.hpp" #include "Utils/ConfigManager.hpp" #include "Utils/Thread.hpp" #include "Utils/StringTokenizer.hpp" #include "precomp.hpp" void _TCPClient(Chattr::TCPSocket sock, Chattr::Address addr); int main() { auto config = Chattr::ConfigManager::load(); Chattr::log::setDefaultLogger(config.logLevel, config.logFileName, config.logfileSize, config.logfileCount); struct Chattr::TCPSocket sock; struct Chattr::Address serveraddr; if (config.ipVersion == 4) { sock.init(AF_INET); serveraddr.set(AF_INET, INADDR_ANY, config.listenPort); } else if (config.ipVersion == 6) { sock.init(AF_INET6); serveraddr.set(AF_INET6, in6addr_any, config.listenPort); } sock.bind(&serveraddr.addr, serveraddr.length); sock.listen(SOMAXCONN); struct Chattr::TCPSocket clientSock; struct Chattr::Address clientAddr; if (config.ipVersion == 4) clientAddr.length = sizeof(sockaddr_in); else clientAddr.length = sizeof(sockaddr_in6); while (true) { spdlog::info("Waiting for connection..."); sock.accept(clientSock, clientAddr); Chattr::Thread thread_(_TCPClient, std::move(clientSock), clientAddr); } } void _TCPClient(Chattr::TCPSocket sock, Chattr::Address addr) { spdlog::info("Connection accepted! from: {}, {}", sock, (std::string)addr); }