3

我正在尝试模拟与一个进程的服务器的连接已关闭而与另一台服务器的连接已启动的场景。在我的情况下,仅拉网线是行不通的,因为我需要另一个过程连接才能保持正常。

这种工作有什么工具吗?我在 Windows 上。谢谢!

4

3 回答 3

3

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

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

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

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

于 2009-08-28T06:37:27.723 回答
2

一种方法是为了测试目的模拟相关的网络连接代码。在这种情况下,您可能希望模拟它返回连接断开时通常会返回的任何内容。

于 2009-08-28T06:29:24.917 回答
0

如果您可以在机器上使用睡眠/休眠模式,这是一个穷人的方法:

  • 在 Windows 防火墙中设置出站规则以禁止特定程序的连接。
  • 已经连接的套接字保持连接:将机器置于睡眠/休眠模式片刻以强制这些套接字断开连接。
  • 系统恢复后,程序无法建立新的连接。
  • 禁用防火墙规则后,新连接就成为可能。

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

于 2016-12-18T20:57:57.427 回答