This commit is contained in:
6arelyFuture 2021-05-11 09:44:27 +02:00
parent 532838ca8e
commit e6808a7703
Signed by: Future
GPG Key ID: FA77F074E98D98A5
2 changed files with 21 additions and 12 deletions

View File

@ -9,7 +9,12 @@ SOCKET sock;
bool startUp() bool startUp()
{ {
WSADATA wsa_data; 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); sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (INVALID_SOCKET == sock) if (INVALID_SOCKET == sock)
@ -39,6 +44,7 @@ bool startUp()
DWORD WINAPI recvTh(LPVOID) DWORD WINAPI recvTh(LPVOID)
{ {
auto buf = std::make_unique<char[]>(BUF_SIZE); auto buf = std::make_unique<char[]>(BUF_SIZE);
printf("Started thread\n");
u_long iMode = 1; u_long iMode = 1;
ioctlsocket(sock, FIONBIO, &iMode); ioctlsocket(sock, FIONBIO, &iMode);
@ -50,16 +56,15 @@ DWORD WINAPI recvTh(LPVOID)
// undisclosed step // undisclosed step
info.serverName_ptr = 0; info.serverName_ptr = 0;
info.rawDataSize = INFO_MAX_DATA; info.rawDataSize = INFO_MAX_DATA;
SecureZeroMemory(&info.rawData, info.rawDataSize);
while (1) while (TRUE)
{ {
SecureZeroMemory(buf.get(), BUF_SIZE); SecureZeroMemory(buf.get(), BUF_SIZE);
auto len = recvfrom(sock, buf.get(), BUF_SIZE, 0, (SOCKADDR*)&sender, &senderSize); auto len = recvfrom(sock, buf.get(), BUF_SIZE, 0, (SOCKADDR*)&sender, &senderSize);
if (len == SOCKET_ERROR) if (len == SOCKET_ERROR)
{ {
return -1; return 1;
} }
if (len == sizeof(serverQuery_t)) if (len == sizeof(serverQuery_t))
@ -75,11 +80,8 @@ DWORD WINAPI recvTh(LPVOID)
sendto(sock, (char*)&info, sizeof(serverInfo_t), 0, (SOCKADDR*)&sender, senderSize); sendto(sock, (char*)&info, sizeof(serverInfo_t), 0, (SOCKADDR*)&sender, senderSize);
} }
} }
#ifdef _LINUX
sleep(1000);
#else
Sleep(1); Sleep(1);
#endif
} }
} }
@ -90,5 +92,16 @@ int main(int, char**)
return 1; return 1;
} }
WSACleanup(); 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;
} }

View File

@ -19,10 +19,6 @@
// std includes // std includes
#include <string> #include <string>
#ifdef _LINUX
#include <unistd.h>
#endif
using namespace std::literals; using namespace std::literals;
// c types // c types