2009-08-28 71 views
3

我试图模拟连接到另一个服务器的连接到某个进程的服务器时出现故障的场景。只需拔掉网线就无法工作,因为我需要另一个进程连接。将网络模拟到特定进程

这种工作是否有任何工具?我在Windows上。谢谢!

回答

3

有几层可以模拟这个。如果你的两台服务器在两个不同的TCP端口上侦听,最简单的方法是。在这种情况下,您可以运行两个tcp代理,并在想要模拟故障时停止/暂停一个代理。对于Windows,我建议使用tcpTrace来做到这一点。

另一种选择是将两台服务器绑定到两个虚拟NIC,它们桥接到物理NIC。当然,如果您有两个物理网卡,您可以将每个服务器进程绑定到不同的物理网卡。

在较低级别,您可以运行WAN模拟器。大多数模拟器允许您损害特定类型的流量或特定端口。一个这样的模拟器是Packetstorm

我建议的另一种方法是将调试器附加到一个进程,并使用调试器暂停进程上的所有线程。通常,一个进程不会死亡,但会陷入垃圾收集或循环中。由于套接字未关闭,许多“高可用性”解决方案不会自动进行故障转移。

+0

谢谢你的答案。 tcpTrace解决方案看起来很有前景。我会尝试这一个。 – Gant 2009-08-28 06:44:39

+0

它的工作原理! tcpTrace非常易于使用。 – Gant 2009-08-28 17:16:22

2

一种方法是将mock的相关网络连接代码用于测试。在这种情况下,如果连接断开,您可能会想嘲笑它通常会返回的任何内容。

+0

感谢您的回答。但我无法访问进程的源代码,因此我无法在应用程序级别进行模拟。 – Gant 2009-08-28 06:32:06

0

一个穷人的做法,如果你可以使用睡眠/你的机器上休眠模式:

  • 在Windows防火墙设置出站规则,以禁止对特定程序的连接。
  • 已连接的插座保持连接状态:将机器暂时置于睡眠/休眠模式一段时间,以强制这些插座断开连接。
  • 系统恢复后,程序无法建立新的连接。
  • 只要您禁用防火墙规则,就可以建立新的连接。

请注意,它不会模拟网络中断,因为每个连接都会立即失败并出现权限错误。但它阻止了一个进程建立连接。