switch to compression with limit at 30 MB

This commit is contained in:
Lion Kortlepel
2024-06-22 22:48:00 +02:00
parent e0e2607632
commit f2b34543f9
5 changed files with 68 additions and 54 deletions

View File

@@ -6,6 +6,7 @@
/// Created by Anonymous275 on 7/25/2020
///
#include "Network/network.hpp"
#include <zlib.h>
#if defined(_WIN32)
#include <winsock2.h>
#include <ws2tcpip.h>
@@ -93,6 +94,8 @@ void ServerSend(std::string Data, bool Rel) {
Ack = true;
if (C == 'N' || C == 'W' || C == 'Y' || C == 'V' || C == 'E' || C == 'C')
Rel = true;
if (compressBound(Data.size()) > 1024)
Rel = true;
if (Ack || Rel) {
if (Ack || DLen > 1000)
SendLarge(Data);
@@ -296,4 +299,4 @@ void TCPGameServer(const std::string& IP, int Port) {
if (CSocket != SOCKET_ERROR)
KillSocket(CSocket);
debug("END OF GAME SERVER");
}
}

View File

@@ -31,8 +31,8 @@ void UDPSend(std::string Data) {
if (ClientID == -1 || UDPSock == -1)
return;
if (Data.length() > 400) {
std::string CMP(Comp(Data));
Data = "ABG:" + CMP;
auto res = Comp(std::span<char>(Data.data(), Data.size()));
Data = "ABG:" + std::string(res.data(), res.size());
}
std::string Packet = char(ClientID + 1) + std::string(":") + Data;
int sendOk = sendto(UDPSock, Packet.c_str(), int(Packet.size()), 0, (sockaddr*)ToServer, sizeof(*ToServer));
@@ -42,15 +42,17 @@ void UDPSend(std::string Data) {
void SendLarge(std::string Data) {
if (Data.length() > 400) {
std::string CMP(Comp(Data));
Data = "ABG:" + CMP;
auto res = Comp(std::span<char>(Data.data(), Data.size()));
Data = "ABG:" + std::string(res.data(), res.size());
}
TCPSend(Data, TCPSock);
}
void UDPParser(std::string Packet) {
if (Packet.substr(0, 4) == "ABG:") {
Packet = DeComp(Packet.substr(4));
auto substr = Packet.substr(4);
auto res = DeComp(std::span<char>(substr.data(), substr.size()));
Packet = std::string(res.data(), res.size());
}
ServerParser(Packet);
}
@@ -92,4 +94,4 @@ void UDPClientMain(const std::string& IP, int Port) {
UDPRcv();
KillSocket(UDPSock);
WSACleanup();
}
}

View File

@@ -112,7 +112,9 @@ std::string TCPRcv(SOCKET Sock) {
std::string Ret(Data.data(), Header);
if (Ret.substr(0, 4) == "ABG:") {
Ret = DeComp(Ret.substr(4));
auto substr = Ret.substr(4);
auto res = DeComp(std::span<char>(substr.data(), substr.size()));
Ret = std::string(res.data(), res.size());
}
#ifdef DEBUG