mirror of
https://github.com/BeamMP/BeamMP-Launcher.git
synced 2026-04-20 07:10:25 +00:00
switch to compression with limit at 30 MB
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user