나는 TCP 클라이언트 - 서버 애플리케이션을 개발 중이다.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