refactor tcp receive to be less weird

This commit is contained in:
Lion Kortlepel 2024-09-22 20:31:25 +02:00
parent 1260515a40
commit 0b589a74c9
No known key found for this signature in database
GPG Key ID: 4322FF2B4C71259B

View File

@ -82,32 +82,26 @@ std::string TCPRcv(SOCKET Sock) {
UUl("Invalid Socket");
return "";
}
int32_t Header, BytesRcv = 0, Temp;
int32_t Header, Temp;
std::vector<char> Data(sizeof(Header));
do {
Temp = recv(Sock, &Data[BytesRcv], 4 - BytesRcv, 0);
Temp = recv(Sock, Data.data(), sizeof(Header), MSG_WAITALL);
if (!CheckBytes(Temp)) {
UUl("Socket Closed Code 3");
return "";
}
BytesRcv += Temp;
} while (BytesRcv < 4);
memcpy(&Header, &Data[0], sizeof(Header));
memcpy(&Header, Data.data(), sizeof(Header));
if (!CheckBytes(BytesRcv)) {
if (!CheckBytes(Temp)) {
UUl("Socket Closed Code 4");
return "";
}
Data.resize(Header);
BytesRcv = 0;
do {
Temp = recv(Sock, &Data[BytesRcv], Header - BytesRcv, 0);
Data.resize(Header, 0);
Temp = recv(Sock, Data.data(), Header, MSG_WAITALL);
if (!CheckBytes(Temp)) {
UUl("Socket Closed Code 5");
return "";
}
BytesRcv += Temp;
} while (BytesRcv < Header);
std::string Ret(Data.data(), Header);