6.5 开发笔记-检测并保持连接的方法

由于中心站要接入网络才能登陆并正常使用,如果网络发生中断就要在第一时间作出反应并注销登陆的用户,以防止无效的操作产生,因此就不能单纯的依靠TCP的检测机制来实现(TCP在发送或接收时能够检测是否断开),这里用到了定时器,定义一个定时器,1500毫秒,创建一个线程每隔1秒向服务器发出保持连接消息,每次收到服务器的响应便把定时器的时间重新设置到1500毫秒,一旦定时器超时便执行注销操作来注销客户端。

定时器的用法如下:

 private Timer timer;

TimerCallback timerDelegate;

timerDelegate = new TimerCallback(timeoutfun);

timer = new Timer(timerDelegate, null, 1500, 0);

 

这样定义的TIMER超时后只运行一次,而

 重新设置定时器时间只需要

timer.change(1500,0);  OK

timer = new Timer(timerDelegate, null, 0, 1500);

这样定义的TIMER每隔1500ms就运行一次,比较巧妙哦

 

晚上碰到诡异的bug ,经过无数次测试思考发现,是定时器惹的祸,主要是定时器在超市时刷新控件没有使用委托,而且在注销时没有废除定时器导致下一次登录时定时器不准确,记住,如果不再需要定时器时,一定要不要忘了把定时器删掉哦

你可能感兴趣的:(温湿度监控项目)