我有一个情况,一个Java程序与服务器建立了一个长时间运行的TCP/IP连接,并且该连接完全按照文档描述的方式运作,但在我的控制范围之外的环境中出现了一件事情。
每个星期六,该服务器都会重新启动,但由于某种原因,客户端没有得到正确通知,因此连接会一直挂起等待响应。这与陈旧的JDBC连接具有完全相同的行为,其中服务器和客户端之间的某个路由器发现连接空闲并在未经通知的情况下丢弃它。
我需要能够重现这种情况,以便能够创建适当的修复方案。
因此,我想知道是否有一种好的方法可以在我控制下模拟路由器静默丢弃连接的情况?
我可以在开发环境和服务器之间放置一个Linux框或Mac框。如果可以在虚拟机(vmware player)中进行断开,则可以运行JVM。
欢迎提供建议。
编辑2012-12-18:对我有用的解决方案是在本地使用基于Java的SOCKS5代理,可以随时使用Ctrl-Z暂停它,并告诉我的应用程序通过它进行。
SO_KEEPALIVE
选项)吗? - Mike Pennington