繁体   English   中英

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

[英]Simulate socket connection reset/timeout on Windows 7

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

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

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

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

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

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

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

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

如果在Windows和Linux中有一种更简单的方法可以做到这一点而不需要FreeBSD启动光盘和带有双网卡的虚拟服务器,我也想听听它!

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM