0

考虑以下情况:

您有一个正在测试的应用程序,但为了测试该程序的网络功能,您需要运行它的多个实例并让它们相互通信。

可能的解决方案是: - 在通过 WAN 或 LAN 连接的单个机器上运行软件。- 在同一台计算机上的虚拟机上运行软件。

我不想使用这些方法中的任何一种(推理无关紧要)。我想知道是否有一种方法可以从测试应用程序(理想情况下使用任何编程语言)重新路由网络传输,以便我可以在台计算机上运行同一软件的多个实例,并让它们表现得好像它们是那台计算机上唯一运行的实例。

换句话说,我希望能够对应用程序进行编码,以便每个实例都侦听相同的“侦听”端口(因为在生产时每台计算机上只会运行一个实例)。然后,我想知道我是否可以在比应用程序更低的级别重新路由网络请求,以便它们不会相互干扰(在同一端口号上发生冲突)。

本质上,我想构建一个重定向网络调用的虚拟环境(而虚拟机需要更多的资源,并且涉及更多)。这可能吗,我该如何解决这个问题?

谢谢!

更新:这是我想要完成的更准确的想法:

基本上,我想编写另一个应用程序,它透明地将绑定请求重定向到可用端口,并管理哪些应用程序绑定在哪里......所以从应用程序的角度来看,所有实例都绑定到端口 1000,但实际上,另一个应用程序是自动管理哪个实例绑定在哪里,并避免潜在的冲突。我觉得这可以通过 Windows Hooks 来完成,但我不确定你如何实现这一点?

4

1 回答 1

0

据我所知,在同一网络设备上多路复用同一端口是不明智的。至少,您需要选择以下选项:

  • 在不同的端口上运行程序的每个实例
  • 创建多个虚拟网络接口

第一个选择很简单,可能是我会选择的。第二个更适合您正在寻找的东西,但它会是一个真正的 PITA 设置 - 您可以查看 VirtualBox 及其仅限主机的网络以获取灵感。如果您在 linux 上编写东西,您可能会研究管道和 chrooting,但您将花费更多时间来设置此环境而不是编写软件。

于 2013-04-27T20:07:57.717 回答