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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值