1、简介
在系统中可以划分3个层次,网络服务,网络模块,业务模块。其中网络服务负责建立物理连接,发送数据包和解析数据包,并根据当前的网络状态产生对应的网络事件,同时把事件通知相应的监听者。网络模块处于业务模块和网络服务之间,主要负责对网络服务进行管理,对业务模块提供网络服务。
网络服务主要使用异步编程方式来实现,并且使用Java NIO实现TCP网络连接和数据的接收与发送。
网络模块向业务模块发布API。业务模块通过API,完成数据包发送。当网络模块接收到数据包后,使用android的消息机制,通知到业务模块。
2、架构介绍
3、网络模块的状态
网络模块的状态有3种,影响因素有两个方面。第一种,没有建立物理连接。第二种,已经建立物理连接,没有建立逻辑连接。第三种,已经建立逻辑连接。
在第三种状态中,业务模块可以直接发送数据包。第二种状态中,把数据包放入网络模块的缓冲区中,等待逻辑连接完成。第一种状态中,把数据放入网络模块中,发起物理连接。当物理连接完成后,会进行逻辑连接。
物理连接 | 逻辑连接 | 处理方式 | |
1 | N | N | 发起物理连接,把数据包放入缓冲区 |
2 | Y | N | 把数据包放入缓冲区 |
3 | Y | Y | 直接发送数据包 |
4、心跳组件
心跳组件是一个线程,定时的发送心跳数据包。当网络模块断开连接的时候,可以停止心跳。