代码之家  ›  专栏  ›  技术社区  ›  Gant

模拟网络到特定过程

  •  3
  • Gant  · 技术社区  · 16 年前

    我试图模拟这样一个场景:一个进程的服务器连接断开,而另一个服务器的连接断开。在我的情况下,仅仅拉网线是行不通的,因为我需要另一个进程连接来保持连接。

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

    3 回复  |  直到 8 年前
        1
  •  3
  •   brianegge    16 年前

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

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

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

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

        2
  •  2
  •   William    16 年前

    一种方法是 mock 用于测试的相关网络连接代码。在这种情况下,如果连接中断,您可能希望模拟它返回通常会返回的内容。

        3
  •  0
  •   Eric Boumendil    8 年前

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

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

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

    推荐文章