자잘한 버그 해결

This commit is contained in:
2025-04-23 01:21:36 +09:00
parent 89cac9c54f
commit cebf59ddd8
6 changed files with 59 additions and 48 deletions

View File

@@ -1,5 +1,5 @@
{
"IP Version" : 6,
"IP Version" : 4,
"Listen Port" : 9010,
"LogLevel" : 1,
"LogfileCount" : 5,

View File

@@ -32,6 +32,12 @@ int main() {
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);
spdlog::info("Waiting for connection...");
sock.accept(clientSock, clientAddr);
}

View File

@@ -24,20 +24,20 @@ void setDefaultLogger(spdlog::level::level_enum logLevel, gsl::czstring logFileN
void critical(gsl::czstring msg) {
#ifdef _WIN32
gsl::zstring msgbuf = nullptr;
FormatMessageA(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
WSAGetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
msgbuf,
0,
NULL);
spdlog::critical("[{}] {}", msg, msgbuf);
LocalFree(msgbuf);
LPSTR msgbuf = nullptr;
FormatMessageA(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
WSAGetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPSTR)&msgbuf,
0,
NULL);
spdlog::critical("[{}] {}", msg, msgbuf);
LocalFree(msgbuf);
#elif __linux__
gsl::czstring msgbuf = strerror(errno);
spdlog::critical("[{}] {}", msg, msgbuf);
gsl::czstring msgbuf = strerror(errno);
spdlog::critical("[{}] {}", msg, msgbuf);
#else
#error "이 플랫폼은 지원되지 않습니다."
#endif
@@ -46,20 +46,20 @@ void critical(gsl::czstring msg) {
void error(gsl::czstring msg) {
#ifdef _WIN32
gsl::zstring msgbuf = nullptr;
FormatMessageA(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
WSAGetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
msgbuf,
0,
NULL);
spdlog::critical("[{}] {}", msg, msgbuf);
LocalFree(msgbuf);
LPSTR msgbuf = nullptr;
FormatMessageA(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
WSAGetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPSTR)&msgbuf,
0,
NULL);
spdlog::critical("[{}] {}", msg, msgbuf);
LocalFree(msgbuf);
#elif __linux__
gsl::czstring msgbuf = strerror(errno);
spdlog::critical("[{}] {}", msg, msgbuf);
gsl::czstring msgbuf = strerror(errno);
spdlog::critical("[{}] {}", msg, msgbuf);
#else
#error "이 플랫폼은 지원되지 않습니다."
#endif

View File

@@ -4,6 +4,14 @@
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;
@@ -68,11 +76,11 @@ void Socket::move(const SOCKET __sock) {
valid_ = true;
};
void Socket::bind(const sockaddr *__addr) {
bind((struct sockaddr *)__addr, sizeof(*__addr));
void Socket::bind(sockaddr *__addr) {
bind((struct sockaddr *)__addr, sizeof(sockaddr));
}
void Socket::bind(const sockaddr *__addr, socklen_t __len) {
void Socket::bind(sockaddr *__addr, socklen_t __len) {
bindAddr.length = __len;
std::memcpy(&bindAddr, __addr, __len);
int retVal = ::bind(sock_, __addr, __len);
@@ -80,19 +88,19 @@ void Socket::bind(const sockaddr *__addr, socklen_t __len) {
log::critical("bind()");
}
void Socket::bind(const sockaddr_in *__addr) {
bind((struct sockaddr *)__addr, sizeof(*__addr));
void Socket::bind(sockaddr_in *__addr) {
bind((struct sockaddr *)__addr, sizeof(sockaddr_in));
}
void Socket::bind(const sockaddr_in *__addr, socklen_t __len) {
void Socket::bind(sockaddr_in *__addr, socklen_t __len) {
bind((struct sockaddr *)__addr, __len);
}
void Socket::bind(const sockaddr_in6 *__addr) {
bind((struct sockaddr *)__addr, sizeof(*__addr));
void Socket::bind(sockaddr_in6 *__addr) {
bind((struct sockaddr *)__addr, sizeof(sockaddr_in6));
}
void Socket::bind(const sockaddr_in6 *__addr, socklen_t __len) {
void Socket::bind(sockaddr_in6 *__addr, socklen_t __len) {
bind((struct sockaddr *)__addr, __len);
}

View File

@@ -5,10 +5,7 @@
namespace Chattr {
void TCPSocket::init(int domain) {
sock_ = ::socket(domain, SOCK_STREAM, 0);
if (sock_ == INVALID_SOCKET)
log::critical("socket()");
init(domain, SOCK_STREAM, 0);
valid_ = true;
}

View File

@@ -6,7 +6,7 @@ namespace Chattr {
class Socket {
public:
Socket() {}
Socket();
Socket(int domain, int type, int protocol);
~Socket();
@@ -15,21 +15,21 @@ public:
operator SOCKET() const;
void move(const SOCKET);
void bind(const sockaddr *__addr);
void bind(const sockaddr *__addr, socklen_t __len);
void bind(sockaddr *__addr);
void bind(sockaddr *__addr, socklen_t __len);
//IPV4
void bind(const sockaddr_in *__addr);
void bind(const sockaddr_in *__addr, socklen_t __len);
void bind(sockaddr_in *__addr);
void bind(sockaddr_in *__addr, socklen_t __len);
//IPV6
void bind(const sockaddr_in6 *__addr);
void bind(const sockaddr_in6 *__addr, socklen_t __len);
void bind(sockaddr_in6 *__addr);
void bind(sockaddr_in6 *__addr, socklen_t __len);
Socket(const Socket&) = delete;
Socket& operator=(const Socket&) = delete;
struct Address bindAddr;
struct Address bindAddr = {};
protected:
bool valid_ = false;
SOCKET sock_ = INVALID_SOCKET;