如何模拟不同的网络场景? (在Java中)

时间:2009-07-27 14:34:19

标签: java networking

我正在构建一个应该全天候运行的客户端服务器应用程序。应用程序用于检测网络故障(使用心脏跳动)并尽快重新连接到服务器。

我做的第一个测试就是停止客户端或服务器,然后再次启动,一切正常。我想知道是否有任何工具可以帮助我模拟拥塞,延迟或更现实的问题,而不仅仅是拔掉我的以太网线。

2 个答案:

答案 0 :(得分:3)

该应用是否使用普通的TCP套接字?或者它使用HTTP / HTTPS?如果基于HTTP的Fiddler(以及其他一些代理服务器)具有模拟慢速连接速度的能力,尽管只是以windows为代价。

或者,我使用Apache TCPMon及其ilk等工具获得了很好的体验。这些可以很好地模拟拥塞和换行,虽然根据我的经验,你仍然会在现实世界中找到新的和有趣的失败模式。

答案 1 :(得分:1)

Sniffy允许您在Java应用程序中block outgoing network connections - 每当您尝试与受限主机建立新连接时,它将抛出ConnectException

只需将-javaagent:sniffy.jar=5559添加到您的JVM参数中,并将浏览器指向localhost:5559 - 它将打开一个网页,其中包含所有已发现的与下游系统和控件的连接,以禁用某些连接。

Sniffy connections console

目前(从版本3.1.3开始)它仅支持无连接方案,但路线图上增加了延迟。

免责声明:我是Sniffy的作者