需要一个能够持续连接多个服务器的代理程序,但它所连接的服务器不太稳定,有时候会关机,为了让代理程序能够在连接断开后自动重新连接,需要一个循环,当Socket异常时自动重新连接。
需要解决几个问题:
1、当手动停止代理程序时不应该再自动重连。
2、当连续多次连接均失败,可能是服务器已关机,不应该再不断重复下去,要休息一段时间再连。
3、如果连接成功后持续一定的时间不用再重连,就不叫“连续连接”。
解决方法:
1、设置一个while循环,判断条件为是否已经设置手动停止标志,若是,则不再循环,退出监听线程。
2、设置一个连接计数,当连接次数达到某个数目时,让线程休息一段时间,同时应该把连接次数清零。
3、设置一个定时器,设定它在一定的时间之后把连接计数器清零,每次开始连接时把上次的定时器取消掉,并建立一个新的定时器。这样一来,假如两次连接的间隔小于定时时间,则上次的定时器还没开始执行清零任务就已经被取消掉,连接计数器能够正常进行;假如某次连接成功了,也就是说连接的持续时间已经超过了定时时间,则定时器的任务得以执行,计数器清零,下次重连的时候会从零开始计数。