述字符,用于描述客户端,本程序中就是显示在列表中的字符串。APP Client 中 的 Device 是手机设备信息,这个成员的作用一是为了识别这是一部手机而不是 其它客户端,同时也为了服务端的管理员更好的了解连接上的手机是哪一部,哪 个型号从而判断是否允许连接。
图 2。2 服务器类图
客户端程序是一个运行于 Android 手机上的 APP。APP 连接上服务器后就开 始监听服务器发送的数据,一旦收到数据就执行更新 UI,显示地图,绘制轨迹 等操作。不是所有设备都能连接上服务器的,设备连接服务器除了要带有特殊的 识别字符串以外,还需要密码的验证,密码由服务器端定义,整个登录流程如图 2。3 所示。
图 2。3 Android APP 登录流程
对于三者之间的数据交换,使用了基于 TCP 协议的 Socket 通信。选用 TCP 协议的原因是 TCP 提供的可靠传输可以保证收发数据的不丢失,按序接收。不 选用 UDP 协议的原因是作为一个监控系统,小车实时发送状态信息,少量的丢 失虽然不会对系统造成太大的影响,但是按序接收是必要的,特别是当网络延迟 较大的时候。因为要绘制小车的轨迹,如果一个 10 秒钟前因网络延迟的数据包 到达客户端并在最近收到的一次正确的位置后,这时轨迹会发生较大的偏移导致 错误的轨迹被绘制。TCP 的不丢失,按序收发的特性正好可以满足本监控系统的 需求。此外,TCP 是一个双向的通信协议,连接的双方可以接收也可以发送数据, 这也是我们所需要的。TCP 和 UDP 协议的对比如下图 2。4: 文献综述
图 2。4 TCP 和 UDP
结构图中的小车和 APP 客户端都是可以多个的。小车和客户端通过报文特 殊的 ID 进行区分。服务器程序提供两个列表分别显示连接的小车和 APP 客户 端。具体的服务器细节将在下一节详细说明。小车发送的报文是需要解码的,有 事先约定好的报文格式,具体格式也将在下一节详细说明。
3 服务器程序
服务器程序是整个监控系统的核心,服务器程序负责连通小车和手机的通信, 没有它,小车和 APP 就无法进行数据交换。服务器主要的任务是进行数据的转 发。它接收来自小车的数据,进行处理后转发给手机 APP。服务器同时也充当一 个管理者的角色,服务器可以列出连接他的小车和手机客户端,对于请求连接的 客户端进行身份验证,检测关闭或者失效的客户端连接,可以主动断开与客户端
的连接,可以选择接收哪个小车的数据,可以模拟小车给客户端发送数据。一旦 服务器开始运行,他就会不停的监听客户端的请求。
服务器端的程序功能分以下几个模块(图 3。1):
图 3。1 程序模块图
3。1 网络数据收发
服务器程序提供了许多功能,其中最关键的就是网络数据的接收和转发。和 客户端的连接是基于 TCP 协议的 Socket 连接。TCP 连接可以保证数据包不丢失 并且有序。TCP 是面向连接的协议,连接的两方必须经过三次握手才能确保连接 已经建立。一旦连接建立后除非一方主动断开或者发生网络异常,否则双方接收 到的数据包都将是有序且不会丢失的[3]。TCP 协议内部在每一个包的首部加上了 序号来确保包是有序的,并有重传等机制保证数据包不丢失[3]。 来~自,优^尔-论;文*网www.youerw.com +QQ752018766-