Android-android中通过心跳包的机制判断与主机的连接情况,具体如何实现 ?

发布于 2016-11-22 20:10:09 字数 117 浏览 1154 评论 2

在程序中,我需要时时判断客户端与主机的连接情况,但我现在已开启一个线程对流进行读写,而且一个主机一次只能响应一个client的连接请求,后来者将居上,也就说,新的请求将连接,旧的请求将断开,断开要有提醒,请问,如何操作?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

虐人心 2017-09-07 02:58:27

不太明白你描述的问题。

如果仅仅是想通过心跳机制判断cs连接情况,可以通过AlarmManager,循环去访问服务器,一旦有连续几次不连接的情况,通过回调通知前端.

清晨说ぺ晚安 2017-02-04 02:33:54

如果你是问在客户的实现:
1, 如果你正在对流进行读写,那么表示其实你己经在活跃状态,不需要发送心跳消息
2, 如果你的网络是空闲的, 那么需要指定一个时间间隔(如20sec)向server发送心跳消息。
所谓的心跳不过就是当网络空闲时,循环用指定的消息格式向服务器发送消息,服务器收到后也用指定的消息格式返回消息,双方确认都在线。

如果你问的是后台的实现:
1, 一个主机不可以一次只能响应一个client,你需要并发响应,否则client的使用就是恶梦。你可以自己写多线程来处理如何并发,书上都有实例可以抄。 但这样的效率相当低,并且你很难处理多线程间同步和死锁问题,所以Java4以后引入了NIO的机制来解决复杂的服务器并发编程,并且速度非常快, 但是NIO本身却也很复杂, 所以我建议采用第三方开源框架,如APACHE的MINA,不需要重复建造轮子。
2, 但如果你的业务的确需要锁定资源,在同一时间的确只能许一个人响应,比如只想一份资料在同一时间只让一个人编辑等。 你可以先锁定资源,先来者先得,后来者也响应,但只响应一个提示消息,并不得到真正的资源。
3, 所以,先来者因为己经正在读取资源,所以可以确定在线,不需要发送心跳,而后来者每次请求都有消息可以返回,要么是错误提示要么是心跳发送到服务器后的返回,所以只要有消息返回就可以确定双方都网络在线

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文