お二方、ご回答誠にありがとうございました。私は、mghie が説明した方法で実装することを選択しました。つまり、接続用のカスタム インターセプター クラスを実装することです。ソリューションに興味がある人のために、ここにソースコードをいくつか提供します。
type
TCountTrafficInterceptor = class (TIdConnectionIntercept)
public
type TIntPointer = ^Longint;
private
FTraffic : TIntPointer;
public
constructor Create (TrafficVar : TIntPointer);
procedure Send (var ABuffer : TIdBytes); override;
procedure Receive (var ABuffer : TIdBytes); override;
end;
constructor TCountTrafficInterceptor.Create (TrafficVar : TIntPointer);
begin
FTraffic := TrafficVar;
end;
procedure TCountTrafficInterceptor.Send (var ABuffer : TIdBytes);
begin
inherited Send (ABuffer);
FTraffic^ := FTraffic^ + Length (ABuffer);
end;
procedure TCountTrafficInterceptor.Receive (var ABuffer : TIdBytes);
begin
inherited Receive (ABuffer);
FTraffic^ := FTraffic^ + Length (ABuffer);
end;
TIdTCPCmdServer の OnConnect メソッドでは、次のようになります。
AContext.Connection.IOHandler.Intercept :=
TCountTrafficInterceptor.Create (@FNetworkTraffic);
私が探していた種類のソリューションです。ご回答ありがとうございます。
ところで: 投稿で (アットマーク) 記号を使用するにはどうすればよいですか? 入力しようとすると、常にブロック引用符が表示されます...