2010-11-07 235 views
4

我想模拟一个套接字连接变坏,以测试我的应用程序。我们的目标是验证我的Java代码是否按照预期的方式运行,当与远程服务器的长期套接字连接在运行时重置或服务器不可用时。模拟Windows 7上的套接字连接重置/超时

我试过在Windows防火墙中创建防火墙规则。但是,启用规则似乎不会影响已打开的套接字连接。拉网线不是一种选择,因为我必须通过与运行我的代码的服务器的远程桌面连接执行这些测试。

回答

0

这样做的一个简单,丑陋和危险的方法是快速禁用,然后通过VBScript和WMI启用正确的NetworkAdapter

更强大的设置解决方案的难点在于使用WAN仿真器来模拟数据包丢失,断开连接和高延迟。这里最好的免费选择是dummynet,虽然有很多昂贵的,用户友好的解决方案。

如果有一种更简单的方法可以在Windows和Linux中执行此操作,而无需使用带有双网卡的FreeBSD启动光盘和虚拟服务器,我还希望听到它!

+1

好主意,谢谢。但是,当我必须通过远程桌面执行所有这些测试时,似乎这两种方法都不起作用 – akirekadu 2010-11-09 16:35:56

1

我意识到这不是直接在Windows下,但考虑到Java的本质,它可能仍然有效。

在Linux下有一个名为Netem的程序,考虑到你的代码是java,可能会运行。我从来没有使用它,所以我不能证明它的能力或使用,但有一些使用here的例子。你可以相当平凡地在虚拟机内部运行Linux(比如免费的(比如啤酒,或者像你在英国享受的那种言论自由的)VirtualBox),希望你的Java应用程序能够在里面运行。

可能不是完美的,而我们对此深感抱歉,普遍缺乏专业知识的,但它可能为你需要

0

你可以杀了客户端应用程序。

此外,您可以通过创建这是一个非常简单的代理应用程序,它通常只是转发数据,但你可以计划给它指令做各种其他事情做。或者,如果出于某种原因,您不能杀死您的客户端应用程序,则可以不用编程模拟丢弃的连接,而只需要杀死该代理应用程序。

0

设置套接字读取超时编程到1毫秒,你总是会得到一个java.net.SocketTimeoutException。