46 lines
1.4 KiB
C++
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);
|
|
|
|
} |