繁体   English   中英

我在哪里可以找到 C++Builder 中 Indy 的 TCP 客户端和服务器的完整工作示例?

[英]Where can I find a fully working example of a TCP Client and Server for Indy in C++Builder?

我想创建一个应用程序作为“中间人”来分析通过 TCP/IP 发送的协议 (ISO 8583)。

  1. 客户端连接到应用程序并发送一些二进制数据(平均长度 500 字节)。
  2. 应用程序接收消息,然后将其发送到真实服务器。
  3. 服务器响应对应用程序的请求。
  4. 应用程序将响应发送到原始客户端。

一些上下文:主要思想是获取原始二进制数据并将其转换为用于解析和解码协议的字符串。

该项目分为两部分:

  1. 网关部分(中间人)。
  2. 数据的解析和解码。

我在第一部分花费了太多时间。 所以,如果有一个模型可以让我开始,那就太好了。 它不必与 Indy 一起使用,但我更喜欢 C++Builder。

这是我第一次使用 Indy,虽然我有使用 TCP/IP 的经验,但我总是将它当作已经存在的东西来使用,而不是在低级实现中使用。

我正在测试Hercules ,到目前为止我可以看到连接。

  1. 当我连接到 Hercules 中的服务器时,我可以看到我的应用程序正在连接。 但是,当我的应用程序断开连接时,我没有看到这样的消息,这意味着(我认为)我的应用程序没有正确断开连接(但我可以根据需要重新连接多次)。

  2. 我正在使用 Hercules(“Hello”字符串)向我的应用程序发送数据。 它显然有效,但我很难获得实际数据。

文档有时会让我进入死链接,没有示例或者它们可以在 Delphi 上找到。

我正在处理以下内容:

Windows 11 家
Embarcadero® C++Builder 10.4 版本 27.0.40680.4203
Delphi 和 C++ Builder 10.4 更新 2
印地 10.6.2.0

看看 Indy 的TIdMappedPortTCP组件。 它是一个 TCP 服务器,充当客户端和指定服务器之间的 MITM 代理,在任何一方发送原始数据时为您提供事件。

使用Bindings集合或DefaultPort属性指定您希望服务器侦听客户端的本地 IP/端口。

使用MappedHostMappedPort属性指定您希望TIdMappedPortTCP连接到的远程服务器。

当客户端连接到TIdMappePortTCP时,将触发OnBeforeConnect事件。

OnConnect事件在TIdMappedPortTCP尝试连接到远程服务器之前触发。

TIdMappedPortTCP连接到远程服务器时,将触发OnOutboundClientConnect事件。

当客户端向TIdMappedPortTCP发送字节时,以及在将字节发送到远程服务器之前,会触发OnExecute事件。 如果需要,事件可以改变字节。

OnOutboundData事件在远程服务器发送字节到TIdMappedPortTCP时被触发,在字节被发送到客户端之前。 如果需要,事件可以改变字节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM