자잘한 버그 해결
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"IP Version" : 6,
|
||||
"IP Version" : 4,
|
||||
"Listen Port" : 9010,
|
||||
"LogLevel" : 1,
|
||||
"LogfileCount" : 5,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -24,13 +24,13 @@ void setDefaultLogger(spdlog::level::level_enum logLevel, gsl::czstring logFileN
|
||||
|
||||
void critical(gsl::czstring msg) {
|
||||
#ifdef _WIN32
|
||||
gsl::zstring msgbuf = nullptr;
|
||||
LPSTR msgbuf = nullptr;
|
||||
FormatMessageA(
|
||||
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
NULL,
|
||||
WSAGetLastError(),
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
msgbuf,
|
||||
(LPSTR)&msgbuf,
|
||||
0,
|
||||
NULL);
|
||||
spdlog::critical("[{}] {}", msg, msgbuf);
|
||||
@@ -46,13 +46,13 @@ void critical(gsl::czstring msg) {
|
||||
|
||||
void error(gsl::czstring msg) {
|
||||
#ifdef _WIN32
|
||||
gsl::zstring msgbuf = nullptr;
|
||||
LPSTR msgbuf = nullptr;
|
||||
FormatMessageA(
|
||||
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
NULL,
|
||||
WSAGetLastError(),
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
msgbuf,
|
||||
(LPSTR)&msgbuf,
|
||||
0,
|
||||
NULL);
|
||||
spdlog::critical("[{}] {}", msg, msgbuf);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user