IdMappedPortTCP - 无事件

时间:2012-10-19 02:16:35

标签: delphi proxy indy

我有一个indy组件:

IdMappedPortTCP1: TIdMappedPortTCP;

以及以下初始化:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Lines.Clear;
  IdMappedPortTCP1.MappedHost := '189.200.10.71';
  IdMappedPortTCP1.MappedPort := 5300;
  IdMappedPortTCP1.Active := true;
end;

procedure TForm1.IdMappedPortTCP1Execute(AContext: TIdContext);
begin
  Memo1.Lines.Add(AContext.Data.ToString);
  Memo1.Lines.Add('------');
end;

procedure TForm1.IdMappedPortTCP1OutboundData(AContext: TIdContext);
begin
  Memo1.Lines.Add(AContext.Data.ToString);
  Memo1.Lines.Add('+++++++'); //
end;

我的其他应用程序连接到189.200.10.71:5300但该组件未触发......

我的错在哪里?

将XE3与include indy组件一起使用

1 个答案:

答案 0 :(得分:3)

MappedHost/MappedPort属性告诉TIdMappedPortTCP客户端连接到它后它连接的位置。您告诉TIdMappedPortTCP要连接到189.200.10.71:5300。如果您的其他应用也连接到189.200.10.71:5300,则它完全绕过TIdMappedPortTCP。这就解释了为什么事件没有触发(BTW,TIdMappedPortTCP是一个多线程组件,但你的事件处理程序不是线程安全的。)

要通过TIdMappedPortTCP,客户端需要连接到TIdMappedPortTCP.Bindings集合正在侦听的IP /端口,而不是分配给MappedHost/MappedPort属性的IP /端口。< / p>