Я разрабатываю приложение TCP Client-Server.Как получить сжатый размер данных с TIdTCPServer?
Я пытаюсь получить сжатый размер пакетов, которые я отправляю клиенту, поэтому я могу сравнить этот размер с несжатым размером данных и получить статистику об полученном коэффициенте сжатия.
На стороне клиента. Я могу получить эту информацию, сравнивая размер отправляемых/полученных данных с размером, который я получаю от событий OnSend/OnReceive от TIdCompressionIntercept
. Просто получить длину параметра ABuffer
этих обработчиков событий.
Но на стороне сервера TIdServerCompressionIntercept не имеет этих событий для подключения.
Так что вопрос. Как я могу получить сжатый размер пакетов, отправленных/полученных сервером, поэтому я могу сравнить эти размеры с необработанным размером данных этих пакетов?
Спасибо.
стороне клиента Пример кода:
var
FRawSentSize ,
FComrpessedSentSize ,
FRawReceivedSize ,
FCompressedReceivedSize : UInt64;
function TFrom1.SendAndReceive(const ToSend: String): String;
begin
TCPClient.IOHandler.WriteLn(ToSend);
Inc(FRawSentSize, Length(ToSend));
Result := TCPClient.IOHandler.ReadLn;
Inc(FRawReceivedSize, Length(Result));
end;
function TForm1.CompressorSend(ASender: TIdConnectionIntercept; var ABuffer: TIdBytes);
begin
Inc(FComrpessedSentSize, Length(ABuffer));
end;
function TForm1.CompressorReceive(ASender: TIdConnectionIntercept; var ABuffer: TIdBytes);
begin
Inc(FCompressedReceivedSize, Length(ABuffer));
end;
Теперь это решение! Большое спасибо Gambit! – Avatar