在Windows 7上模拟套接字连接重置/超时

时间:2010-11-07 23:57:37

标签: java sockets network-programming timeout

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

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

4 个答案:

答案 0 :(得分:1)

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

在Linux下有一个名为Netem的程序,考虑到你的代码是java,可能会运行。我从来没有使用它,所以我无法证明它的能力或用途,但有一些使用的例子here。你可以在虚拟机中轻松运行Linux(比如免费的(如啤酒,或者你在英国享受的那种免费语音)VirtualBox),希望你的Java应用程序可以在其中运行。

可能并不完美,对于普遍缺乏专业知识感到抱歉,但它可能适用于您需要的东西

答案 1 :(得分:0)

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

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

如果在Windows和Linux中有一种更简单的方法可以在不需要FreeBSD启动盘和带双网卡的虚拟服务器的情况下执行此操作,我也希望听到它!

答案 2 :(得分:0)

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

此外,您可以通过为此创建一个非常简单的代理应用程序来完成此操作,该应用程序通常只转发数据,但您可以编程为其提供命令以执行各种其他操作。或者,如果由于某种原因,您无法终止您的客户端应用程序,则不要以编程方式模拟已删除的连接,只需终止此代理应用程序。

答案 3 :(得分:0)

以编程方式将套接字读取超时设置为1毫秒,您将始终获得java.net.SocketTimeoutException。