【发布时间】:2009-04-29 07:39:13
【问题描述】:
是否可以使用 Indy 模拟传入的消息(如果它很重要:我使用的是 Indy 10 和 Delphi 2009)?我希望能够在本地创建这些消息,并且我希望 Indy 相信它们来自网络中的特定客户端。所有内部 Indy 处理(接收消息的线程的选择等)应该与消息通过网络到达时完全相同。
对此有什么想法吗?提前感谢您的任何提示。
【问题讨论】:
标签: delphi networking indy
是否可以使用 Indy 模拟传入的消息(如果它很重要:我使用的是 Indy 10 和 Delphi 2009)?我希望能够在本地创建这些消息,并且我希望 Indy 相信它们来自网络中的特定客户端。所有内部 Indy 处理(接收消息的线程的选择等)应该与消息通过网络到达时完全相同。
对此有什么想法吗?提前感谢您的任何提示。
【问题讨论】:
标签: delphi networking indy
您想要做的与 Indy 无关,因为您需要在低得多的级别上执行此操作。让 Indy 相信消息来自特定客户端的最简单方法是将准备好的数据包注入网络堆栈。在 Google 或 Wikipedia 上阅读 TCP 数据包注入。 EtterCap 就是这样一种工具,它允许将数据包注入已建立的连接。但是,这肯定会进入灰色地带,因为某些工具在某些国家/地区是非法的。
无论如何,恕我直言,这一切都太复杂了。我不知道您到底想做什么,但是专门准备的客户端或服务器是在开发服务器或客户端应用程序时模拟某些行为的更好工具。你可以在本地运行它们,或者如果你需要不同的 IP 地址或子网,你可以用虚拟机做很多事情。
【讨论】:
Indy 没有为此提供任何内置机制,但我会不由自主地建议构建一个小型测试应用程序(或套件),该应用程序在您的开发机器上本地运行并连接到您的 Indy 服务器应用程序重播消息。
如果 TCP 连接是在本地或从远程主机建立的,这应该与您的 Indy 服务器应用程序无关,因为创建服务器线程和处理命令的机制与这两种情况相同。
我的最后一次工作涉及使用 Indy,我们所有的测试都是使用类似的 Resender 类型的应用程序完成的,该应用程序将加载本地消息文件并将这些文件发送到 Indy 服务器应用程序。
HTH,祝你好运!
【讨论】:
【讨论】:
Indy 具有用于跨平台支持的抽象堆栈机制 (IDStack.pas) 我认为您可以破解 Windows 堆栈 (IdStackWindows.pas)。这是一个类。你甚至可以考虑派生它并重写一些函数来进行破解。
【讨论】: