From e6808a77033d3e6c47ef22cfcaa218f5b7db2470 Mon Sep 17 00:00:00 2001 From: Diavolo Date: Tue, 11 May 2021 09:44:27 +0200 Subject: [PATCH] POC --- src/main.cpp | 29 +++++++++++++++++++++-------- src/stdinc.hpp | 4 ---- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index eb11ba6..fa84f54 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -9,7 +9,12 @@ SOCKET sock; bool startUp() { WSADATA wsa_data; - WSAStartup(MAKEWORD(2, 2), &wsa_data); + int wasResult = WSAStartup(MAKEWORD(2, 2), &wsa_data); + if (wasResult != 0) + { + printf("WSAStartup error: %d\n", wasResult); + return false; + } sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (INVALID_SOCKET == sock) @@ -39,6 +44,7 @@ bool startUp() DWORD WINAPI recvTh(LPVOID) { auto buf = std::make_unique(BUF_SIZE); + printf("Started thread\n"); u_long iMode = 1; ioctlsocket(sock, FIONBIO, &iMode); @@ -50,16 +56,15 @@ DWORD WINAPI recvTh(LPVOID) // undisclosed step info.serverName_ptr = 0; info.rawDataSize = INFO_MAX_DATA; - SecureZeroMemory(&info.rawData, info.rawDataSize); - while (1) + while (TRUE) { SecureZeroMemory(buf.get(), BUF_SIZE); auto len = recvfrom(sock, buf.get(), BUF_SIZE, 0, (SOCKADDR*)&sender, &senderSize); if (len == SOCKET_ERROR) { - return -1; + return 1; } if (len == sizeof(serverQuery_t)) @@ -75,11 +80,8 @@ DWORD WINAPI recvTh(LPVOID) sendto(sock, (char*)&info, sizeof(serverInfo_t), 0, (SOCKADDR*)&sender, senderSize); } } -#ifdef _LINUX - sleep(1000); -#else + Sleep(1); -#endif } } @@ -90,5 +92,16 @@ int main(int, char**) return 1; } + DWORD dwThreadId; + auto thread = CreateThread(0, 0, recvTh, 0, 0, &dwThreadId); + if (thread == NULL) + { + printf("Error in creating thread\n"); + return 1; + } + + WaitForSingleObject(thread, INFINITE); WSACleanup(); + + return 0; } diff --git a/src/stdinc.hpp b/src/stdinc.hpp index 8003163..9dab2a6 100644 --- a/src/stdinc.hpp +++ b/src/stdinc.hpp @@ -19,10 +19,6 @@ // std includes #include -#ifdef _LINUX -#include -#endif - using namespace std::literals; // c types