当前位置: 主页 > 论文库 > 计算机 > 计算机应用 >

关于LBS通信系统中服务端的设计与实现

时间:2013-06-06 15:45 来源:www.lunwen163.com 作者:163论文网 点击:

【摘要】:服务端是整个LBS系统运行的核心,它负责调度各种资源协调工作。按照功能划分服务器共计有如下模块: 用户信息、数据汇总、数据分类、数据下发、数据库维护、权限配置、服务审核和日志记录模块。本文对LBS系统服务端进行分析,然后给出LBS服务的模块设计
关键词:LBS;C/S结构;
一、 LBS通信服务端的设计
在实际运行中LBS系统的服务器端是整个系统的核心,服务器功能模块划分如下图所示:
  

 

 

图1 服务器功能模块划分
LBS服务器各功能模块的模型主要有:数据维护模块、权限分配模块、服务审批模块、身份认证模块、消息分类模块、数据下发模块及日志记录模块等,每个模块的具体描述如下:
1、 数据库维护模块:主要处理来往的业务数据。包括内容有:用户基本信息、产品基本信息以及日常通信数据的查询修改和添加。
2、 权限分配模块:负责完成用户的权限配置。具体的有:记录和验证管理员对用户的权限配置数据,并写入数据库;读取用户的权限信息并返回给客户端。
3、身份认证模块:验证申请登录的用户信息是否合法。具体的有:用户的登录请求处理、登录日志处理及向客户端反馈确认结果。
4、消息分类模块:处理服务器与通信平台之间数据的向上封装和向下解析。具体有:对通信平台传来的数据进行解析并分给相应的功能模块;把各功能模块传来的数据进行分类,按照对应的协议类型封装后再传给通信平台。
5、服务审批模块:处理用户发来的各类申请,并从后台转给管理员。具体内容有:对处理的数据进行反馈;查询用户的各类申请数据;接收管理员反馈的审批结果,并返给对应用户。
6、数据下发模块:根据缓冲池中各类数据的标志循环遍历socket对象表,找出对应用户发送数据。
7、日志记录模块:处理日常数据的日志记录,提供标准接口供其他对象调用。
二、 LBS通信服务端的实现
1、用户信息认证模块:负责对登录/登出数据进行处理。
    (1)数据结构的实现
用户信息认证模块的功能就是对客户端提交来的登录、登出及身份认证等命令进行处经理并反馈结果的。在下图4.5中,Login_Stru为登录系统的数据结构,Logout_Stru为推出系统的数据结构,Logres_Stru为服务器向客户端返回身份认证结果的数据结构。szUser_ID为用户的登录帐号,最大长度由宏定义MAX_USER为用户名的最大长度,szPWD为用户登录密码,MAXee_PWD为密码的最大长度;cRes为从返回的验证结果。

 

 

 

    (2)接口的实现
    ProcessLogout和ProcessLogin是模块实现的两个外部接口,用于处理用户的登录、等出命令,它们都属于事件响应函数,由消息分类模块激活调用。

 

(3)工作流程
消息分类模块将接收到的数据进行解析分类,把身份认证请求的命令转给身份认证模块,然后身份认证模块按照登录协议对数据进行解析,提取出有效的帐号和密码。再调用数据库的用户表对其对比查询,如果有匹配的数据,则返回认证通过命令,否则返回登录失败命令。

 

 

 

 

 

图2身份认证模块工作流程
如果用户登录失败,则需要根据用户遍历socket缓冲区,从中删除掉非法用户。
2、信息汇总模块:主要功能是收集用户上报的各种信息,筛选过滤后入库。内容上包含了对上报数据的筛选、入库;将用户信息的修改结果入库。
    (1)、数据结构实现
在下图4.8中,PositionArray_Stru为位置数据在传输时的数据结构,用于信息汇总和下发模块中,Pos为Position_Stru类型的数组,存储目标权限内的位置数据,MAX_POS决定了元素的最大个数;nCount则决定了数组元素的实际个数。Position_Stru是单个用户位置数据的数据结构:nID是标识,占四个字节;fLongitude, fLatitude分别是经度和纬度,为浮点类型数据各占四个字节;Might为高度,占四个字节:nSec是位置数据的产生的时间。

 

 

 


    (2)、接口实现:接口的实现代码如下:
int PPUp ( struct PArray_Stru *loginInfo );     //位置信息上报接口
    (3)、工作流程
         首先由消息分类模块对接收到的数据进行解析分类,若有位置上报数据,则通过消息传递的方式触发信息汇总模块,进行处理:
    (1)首先按照PositionArray Stru结构对数据包进行解析
    (2)对位置数据进行合法性检测,剔除无效数据。
    (3)对Pos数组进行遍历,遍历过程如下:
        (i)根据nID,查询数据库中该用户的最新位置数据
        (ii)对比nSe,进行选择。
        (iii)计算POS_ONGITUDE和fLongitude字段,进行选择;
        (iv)把新的位置数据插入POSITION_INFO表;
        (v)将新数据放入缓冲表中,再读取下个元素。
    (4) 结果返回。
3、数据分类模块:数据分类模块是客户端和服务端共有的一个模块,位于中间层。它负责处理传输数据的封装下发和解析上报。客户端和服务端各自的数据分类模块在具体实现上存有差异。该模块在服务端的接口实现如下图所示:


该模块有两个接口共给上层模块调用,即OnReceiveMsg()和SendMsg()。发送接口实现网络数据的封装发送,它的参数有:nSendType(发送方式)、ip(IP地址)、pBuf(数据缓冲区)、nMsgType(消息的类型)。接收接口是提供给网络通信平台调用的,响应网络通信平台发出的消息事件,它的参数有,ip(IP地址)、pMsg(数据包内容)。
4、数据下发模块    主要功能是按照管理员设定的时间周期,向用户定时下发信息。实现过程如下:
    (1)、数据结构的实现
Struct PositionArray_Stru(int nCount,Struct Postion_Stru);
    (2)、接口的实现
    int SendPositionDown(struct PositionArray Stru *loginInfo);
    (3)、工作流程
在服务器运行后,可启动一个定时器,按照预先设定的频率定时检测缓冲区,如果有数据则触发信息下发模块,然后遍历socket缓冲区,找到对应的用户链接信息,再从查询数据库找到该用户权限,根据权限提取数据,封装后由给消息分类模块负责发送。

 

 

 

 

 


图3数据下发模块工作流程
本文对LBS位置服务系统的服务端进行了介绍,对一些关键性的模块给出了详细的借口实现过程。最后对整个系统的功能和性能进行了模拟测试,测试结果显示基本实现了LBS系统的各种功能。实验证明:在使用了多源数据融合技术和多线程管理下的数据库访问技术后,LBS位置服务系统能稳定的实现对移动目标的定位、跟踪等功能,达到现预期的设计目标。
参考文献:
[1] 朱洪军,基于GIS的移动终端LBS系统建设与实现,[硕士学位论文],上海:华东师范大学,2008.5
[2]李彬,杨春,张功国,LBS定位技术分析比较及其系统设计,广东通信技术,2005.3
[3]马林兵,陈晓翔.LBS服务中的位置感知计算体系研究,中山大学学报,2005.6
[4] 刘美兰,网络安全检测预警技术研究,[硕士学位论文],郑州:中国人民解放军信息工程大学,2002
[5] 谢宗仁,木马原理分析与实现,[硕士学位论文],济南:山东大学,2009.5