Files
NP_Midterm/Server/src/server.cpp
2025-04-26 16:17:19 +09:00

46 lines
1.4 KiB
C++

#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);
}