是否可以使用Indy模拟传入的消息(如果它具有任何重要性:我使用的是Indy 10和Delphi 2009)?我希望能够在本地创建这些消息,我希望Indy相信它们来自网络中的特定客户端。所有内部Indy处理(接收消息的线程的选择和类似的东西)应该与消息通过网络到达时完全相同。

有什么想法吗?提前感谢任何提示。

有帮助吗?

解决方案

你想做什么与Indy无关,因为你需要在更低的层次上做这件事。使Indy最简单的方法是认为来自特定客户端的消息是将准备好的数据包注入网络堆栈。阅读Google或Wikipedia上的TCP数据包注入。 EtterCap 就是这样一种工具,它允许将数据包注入已建立的连接。然而,这肯定会进入灰色地带,因为有些工具在某些国家是非法的。

无论如何,所有这些都是恕我直言,太复杂了。我不知道您想要做什么,但是在开发服务器或客户端应用程序时,特别准备的客户端或服务器是模拟某些行为的更好工具。您可以在本地运行它们,或者如果您需要具有不同的IP地址或子网,则可以对虚拟机执行大量操作。

其他提示

Indy没有任何内置机制,但是我想建立一个在开发机器上本地运行并连接到Indy服务器应用程序的小型测试应用程序(或套件)重播消息。

如果在本地或从远程主机建立TCP连接,则应与您的Indy服务器应用程序无关,因为创建服务器线程的机制和处理的命令与两种方案都相同。

我的最后一次演出涉及使用Indy,我们所有的测试都是使用类似的Resender类型应用程序完成的,该应用程序将加载本地消息文件并将这些文件发送到Indy服务器应用程序。

HTH祝你好运!

您可以做的一件事是创建虚拟机来运行您的测试客户端,这样他们就不会被视为“本地机器”,并且使用VMS创建复杂网络相当简单 - 只要您有足够的内存和磁盘空间。使用VM进行测试的另一个好处是,您可以在专注于部署时完全消除开发环境。惊人的节省了多少时间。

VirtualPC 可从Microsoft免费下载并正常工作相当好。 VMWare 还有另一种选择,但入门费用要多一些。出于开发目的,我更喜欢桌面版本,但服务器版本也运行良好。您仍需要拥有安装虚拟操作系统的许可证。 MSDN 会员资格可能是最便宜的方式,并允许您为其他版本的操作系统构建测试环境。

Indy具有跨平台支持的抽象堆栈机制(IDStack.pas)我认为你可以破解Windows的堆栈(IdStackWindows.pas)。这是一堂课。你甚至可以考虑推导它并覆盖一些函数来进行破解。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top