자잘한 버그 해결
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"IP Version" : 6,
|
"IP Version" : 4,
|
||||||
"Listen Port" : 9010,
|
"Listen Port" : 9010,
|
||||||
"LogLevel" : 1,
|
"LogLevel" : 1,
|
||||||
"LogfileCount" : 5,
|
"LogfileCount" : 5,
|
||||||
|
|||||||
@@ -32,6 +32,12 @@ int main() {
|
|||||||
sock.listen(SOMAXCONN);
|
sock.listen(SOMAXCONN);
|
||||||
struct Chattr::TCPSocket clientSock;
|
struct Chattr::TCPSocket clientSock;
|
||||||
struct Chattr::Address clientAddr;
|
struct Chattr::Address clientAddr;
|
||||||
|
|
||||||
|
if (config.ipVersion == 4)
|
||||||
|
clientAddr.length = sizeof(sockaddr_in);
|
||||||
|
else
|
||||||
|
clientAddr.length = sizeof(sockaddr_in6);
|
||||||
|
|
||||||
spdlog::info("Waiting for connection...");
|
spdlog::info("Waiting for connection...");
|
||||||
sock.accept(clientSock, clientAddr);
|
sock.accept(clientSock, clientAddr);
|
||||||
}
|
}
|
||||||
@@ -24,13 +24,13 @@ void setDefaultLogger(spdlog::level::level_enum logLevel, gsl::czstring logFileN
|
|||||||
|
|
||||||
void critical(gsl::czstring msg) {
|
void critical(gsl::czstring msg) {
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
gsl::zstring msgbuf = nullptr;
|
LPSTR msgbuf = nullptr;
|
||||||
FormatMessageA(
|
FormatMessageA(
|
||||||
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
|
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
|
||||||
NULL,
|
NULL,
|
||||||
WSAGetLastError(),
|
WSAGetLastError(),
|
||||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||||
msgbuf,
|
(LPSTR)&msgbuf,
|
||||||
0,
|
0,
|
||||||
NULL);
|
NULL);
|
||||||
spdlog::critical("[{}] {}", msg, msgbuf);
|
spdlog::critical("[{}] {}", msg, msgbuf);
|
||||||
@@ -46,13 +46,13 @@ void critical(gsl::czstring msg) {
|
|||||||
|
|
||||||
void error(gsl::czstring msg) {
|
void error(gsl::czstring msg) {
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
gsl::zstring msgbuf = nullptr;
|
LPSTR msgbuf = nullptr;
|
||||||
FormatMessageA(
|
FormatMessageA(
|
||||||
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
|
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
|
||||||
NULL,
|
NULL,
|
||||||
WSAGetLastError(),
|
WSAGetLastError(),
|
||||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||||
msgbuf,
|
(LPSTR)&msgbuf,
|
||||||
0,
|
0,
|
||||||
NULL);
|
NULL);
|
||||||
spdlog::critical("[{}] {}", msg, msgbuf);
|
spdlog::critical("[{}] {}", msg, msgbuf);
|
||||||
|
|||||||
@@ -4,6 +4,14 @@
|
|||||||
|
|
||||||
namespace Chattr {
|
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) {
|
Socket::Socket(int domain, int type, int protocol) {
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
WSADATA wsa;
|
WSADATA wsa;
|
||||||
@@ -68,11 +76,11 @@ void Socket::move(const SOCKET __sock) {
|
|||||||
valid_ = true;
|
valid_ = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
void Socket::bind(const sockaddr *__addr) {
|
void Socket::bind(sockaddr *__addr) {
|
||||||
bind((struct sockaddr *)__addr, sizeof(*__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;
|
bindAddr.length = __len;
|
||||||
std::memcpy(&bindAddr, __addr, __len);
|
std::memcpy(&bindAddr, __addr, __len);
|
||||||
int retVal = ::bind(sock_, __addr, __len);
|
int retVal = ::bind(sock_, __addr, __len);
|
||||||
@@ -80,19 +88,19 @@ void Socket::bind(const sockaddr *__addr, socklen_t __len) {
|
|||||||
log::critical("bind()");
|
log::critical("bind()");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Socket::bind(const sockaddr_in *__addr) {
|
void Socket::bind(sockaddr_in *__addr) {
|
||||||
bind((struct sockaddr *)__addr, sizeof(*__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);
|
bind((struct sockaddr *)__addr, __len);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Socket::bind(const sockaddr_in6 *__addr) {
|
void Socket::bind(sockaddr_in6 *__addr) {
|
||||||
bind((struct sockaddr *)__addr, sizeof(*__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);
|
bind((struct sockaddr *)__addr, __len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,10 +5,7 @@
|
|||||||
namespace Chattr {
|
namespace Chattr {
|
||||||
|
|
||||||
void TCPSocket::init(int domain) {
|
void TCPSocket::init(int domain) {
|
||||||
sock_ = ::socket(domain, SOCK_STREAM, 0);
|
init(domain, SOCK_STREAM, 0);
|
||||||
if (sock_ == INVALID_SOCKET)
|
|
||||||
log::critical("socket()");
|
|
||||||
|
|
||||||
valid_ = true;
|
valid_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Chattr {
|
|||||||
|
|
||||||
class Socket {
|
class Socket {
|
||||||
public:
|
public:
|
||||||
Socket() {}
|
Socket();
|
||||||
Socket(int domain, int type, int protocol);
|
Socket(int domain, int type, int protocol);
|
||||||
~Socket();
|
~Socket();
|
||||||
|
|
||||||
@@ -15,21 +15,21 @@ public:
|
|||||||
operator SOCKET() const;
|
operator SOCKET() const;
|
||||||
void move(const SOCKET);
|
void move(const SOCKET);
|
||||||
|
|
||||||
void bind(const sockaddr *__addr);
|
void bind(sockaddr *__addr);
|
||||||
void bind(const sockaddr *__addr, socklen_t __len);
|
void bind(sockaddr *__addr, socklen_t __len);
|
||||||
|
|
||||||
//IPV4
|
//IPV4
|
||||||
void bind(const sockaddr_in *__addr);
|
void bind(sockaddr_in *__addr);
|
||||||
void bind(const sockaddr_in *__addr, socklen_t __len);
|
void bind(sockaddr_in *__addr, socklen_t __len);
|
||||||
|
|
||||||
//IPV6
|
//IPV6
|
||||||
void bind(const sockaddr_in6 *__addr);
|
void bind(sockaddr_in6 *__addr);
|
||||||
void bind(const sockaddr_in6 *__addr, socklen_t __len);
|
void bind(sockaddr_in6 *__addr, socklen_t __len);
|
||||||
|
|
||||||
Socket(const Socket&) = delete;
|
Socket(const Socket&) = delete;
|
||||||
Socket& operator=(const Socket&) = delete;
|
Socket& operator=(const Socket&) = delete;
|
||||||
|
|
||||||
struct Address bindAddr;
|
struct Address bindAddr = {};
|
||||||
protected:
|
protected:
|
||||||
bool valid_ = false;
|
bool valid_ = false;
|
||||||
SOCKET sock_ = INVALID_SOCKET;
|
SOCKET sock_ = INVALID_SOCKET;
|
||||||
|
|||||||
Reference in New Issue
Block a user