delphi - IdMappedPortTCP - 无事件

标签 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 与包含 indy 组件一起使用

最佳答案

MappedHost/MappedPort 属性告诉 TIdMappedPortTCP 一旦客户端连接到它,它就连接到哪里。您正在告诉 TIdMappedPortTCP 连接到 189.200.10.71:5300。如果您的其他应用也连接到 189.200.10.71:5300,那么它会完全绕过 TIdMappedPortTCP。这解释了为什么事件没有触发(顺便说一句,TIdMappedPortTCP 是一个多线程组件,但您的事件处理程序不是线程安全的)。

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

关于delphi - IdMappedPortTCP - 无事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12966450/

相关文章:

c++ - 捕获异常而不必抛出

linux - 从终端更改 Ubuntu 12.04 中的系统代理设置

delphi - Indy "Could not load SSL Library"与 Delphi 2007/Apache

python - 在 python 中打开和读取 .abs 数据库文件

delphi - 仅向无形 { dpr } 的 Delphi 应用程序添加 USB 检测

json - 如何在delphi中对TJSONArray进行排序

ajax - django ajax 代理 View

java - 如何设置 JVM 使用的代理

Delphi - 使用 Listview 管理 Indy TCPServer 连接

delphi - 如何在 Delphi 7 中通过 SSL 和 Indy 发送电子邮件