题
是否可以使用Indy模拟传入的消息(如果它具有任何重要性:我使用的是Indy 10和Delphi 2009)?我希望能够在本地创建这些消息,我希望Indy相信它们来自网络中的特定客户端。所有内部Indy处理(接收消息的线程的选择和类似的东西)应该与消息通过网络到达时完全相同。
有什么想法吗?提前感谢任何提示。
解决方案
你想做什么与Indy无关,因为你需要在更低的层次上做这件事。使Indy最简单的方法是认为来自特定客户端的消息是将准备好的数据包注入网络堆栈。阅读Google或Wikipedia上的TCP数据包注入。 EtterCap 就是这样一种工具,它允许将数据包注入已建立的连接。然而,这肯定会进入灰色地带,因为有些工具在某些国家是非法的。
无论如何,所有这些都是恕我直言,太复杂了。我不知道您想要做什么,但是在开发服务器或客户端应用程序时,特别准备的客户端或服务器是模拟某些行为的更好工具。您可以在本地运行它们,或者如果您需要具有不同的IP地址或子网,则可以对虚拟机执行大量操作。
其他提示
Indy没有任何内置机制,但是我想建立一个在开发机器上本地运行并连接到Indy服务器应用程序的小型测试应用程序(或套件)重播消息。
如果在本地或从远程主机建立TCP连接,则应与您的Indy服务器应用程序无关,因为创建服务器线程的机制和处理的命令与两种方案都相同。
我的最后一次演出涉及使用Indy,我们所有的测试都是使用类似的Resender类型应用程序完成的,该应用程序将加载本地消息文件并将这些文件发送到Indy服务器应用程序。
HTH祝你好运!Indy具有跨平台支持的抽象堆栈机制(IDStack.pas)我认为你可以破解Windows的堆栈(IdStackWindows.pas)。这是一堂课。你甚至可以考虑推导它并覆盖一些函数来进行破解。