Finished network

This commit is contained in:
dawidg81 2026-03-04 16:15:07 +01:00
commit 7e33f321bb
2 changed files with 55 additions and 82 deletions

View file

@ -1,45 +1,51 @@
#include "Socket.hpp" #include "Socket.hpp"
class Socket sockaddr_in service;
{ int Socket::winInit()
private:
Logger log;
public:
int winInit()
{ {
WSADATA wsaData; WSADATA wsaData;
int result = WSAStartup( MAKEWORD(2, 2), & wsaData ); if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
if (result != 0) log.err("Network.Socket.winInit: Initialization error"); log.err("Network.Socket.winInit: Initialization error");
return 1;
}
log.info("Network.Socket.winInit: WSA initialized");
log.info("Network.Socket.winInit: Socket initialized"); mainSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKET mainSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if (mainSocket == INVALID_SOCKET) { if (mainSocket == INVALID_SOCKET) {
log.err("Network.Socket.winInit: Fatal error: Error creating socket"); log.err("Network.Socket.winInit: Error creating socket: " + std::to_string(WSAGetLastError()));
log.err(WSAGetLastError());
WSACleanup(); WSACleanup();
return 1; return 1;
} }
log.info("Network.Socket.winInit: Socket created"); log.info("Network.Socket.winInit: Socket created");
sockaddr_in service;
memset(&service, 0, sizeof(service)); memset(&service, 0, sizeof(service));
service.sin_family = AF_INET; service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr(NET_SOCK_ADDR); service.sin_addr.s_addr = inet_addr(NET_SOCK_ADDR);
service.sin_port = htons(NET_SOCK_PORT); service.sin_port = htons(NET_SOCK_PORT);
log.info("Network.Socket.winInit: Socket configured");
return 0;
}
int Socket::winBind()
{
if (bind(mainSocket, (SOCKADDR*)&service, sizeof(service)) == SOCKET_ERROR) { if (bind(mainSocket, (SOCKADDR*)&service, sizeof(service)) == SOCKET_ERROR) {
log.err("Network.Socket.winInit: Fatal error: Bind failed"); log.err("Network.Socket.winInit: Bind failed: " + std::to_string(WSAGetLastError()));
closesocket(mainSocket);
return 1;
}
return 0;
}
int Socket::winListen()
{
if (listen(mainSocket, SOMAXCONN) == SOCKET_ERROR) {
log.err("Network.Socket.winInit: Listen failed: " + std::to_string(WSAGetLastError()));
closesocket(mainSocket); closesocket(mainSocket);
return 1; return 1;
} }
log.info("Network.Socket.winInit: Socket bound to address " + NET_SOCK_ADDR + " on port " + string to_string(NET_SOCK_PORT) + ". Ready to listen for connections"); log.info("Network.Socket.winInit: Listening on " + std::string(NET_SOCK_ADDR) + ":" + std::to_string(NET_SOCK_PORT));
return 0; return 0;
} }
};

View file

@ -1,8 +1,7 @@
#pragma once
#include <winsock2.h> #include <winsock2.h>
#include "../Core/Logger.hpp" #include "../Core/Logger.hpp"
#pragma once
#define NET_SOCK_ADDR "0.0.0.0" #define NET_SOCK_ADDR "0.0.0.0"
#define NET_SOCK_PORT 25565 #define NET_SOCK_PORT 25565
@ -10,42 +9,10 @@ class Socket
{ {
private: private:
Logger log; Logger log;
SOCKET mainSocket = INVALID_SOCKET;
public: public:
int winInit() int winInit();
{ int winBind();
WSADATA wsaData; int winListen();
int result = WSAStartup( MAKEWORD(2, 2), & wsaData );
if (result != 0) log.err("Network.Socket.winInit: Initialization error");
log.info("Network.Socket.winInit: Socket initialized");
SOCKET mainSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if (mainSocket == INVALID_SOCKET) {
log.err("Network.Socket.winInit: Fatal error: Error creating socket");
log.err(WSAGetLastError());
WSACleanup();
return 1;
}
log.info("Network.Socket.winInit: Socket created");
sockaddr_in service;
memset( & service, 0, sizeof(service) );
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr(NET_SOCK_ADDR);
service.sin_port = htons(NET_SOCK_PORT);
log.info("Network.Socket.winInit: Socket configured");
if (bind(mainSocket, (SOCKADDR *) & service, sizeof(service)) == SOCKET_ERROR ) {
log.err("Network.Socket.winInit: Fatal error: Bind failed");
closesocket(mainSocket);
return 1;
}
log.info("Network.Socket.winInit: Socket bound to address " + NET_SOCK_ADDR + " on port " + string to_string(NET_SOCK_PORT) + ". Ready to listen for connections");
return 0;
}
}; };