短消息货运信息系统——毕业论文_第1页
短消息货运信息系统——毕业论文_第2页
短消息货运信息系统——毕业论文_第3页
短消息货运信息系统——毕业论文_第4页
短消息货运信息系统——毕业论文_第5页
免费预览已结束,剩余45页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

贵州大学本科毕业论文短消息货运信息系统摘要随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,已进入人类社会的各个领域并发挥着越来越重要的作用。手机成本的不断降低,使得手机已经成为每个人生活必备的通讯工具,而传统的货运信息系统不能给货运公司提供实时的消息,消息的滞后性还是阻碍了物流业的成本降低,因此我们将短消息系统和货运信息系统的特点相结合开发了短消息货运信息系统。这样就能够将得到的货运信息快速的发动到货运承担方的手机中,这样不但保证了消息的实时性,还降低了物流在流通时间中等待时间的成本代价。本课题短消息货运系统采用VC+6.0和Access工具开发的,应用SQL查询语句对数据库进行修改、删除、查询等操作,应用ODBC技术连接应用程序和数据库。 本信息系统主要实现的功能模块:会员信息管理、车源信息管理、货源信息管理、短消息发送、短消息接收、系统管理。本系统界面友好,功能完善,操作简单,比较实用。关键字:VC+6.0,Access,CMPP,短消息,ODBC,管理系统Freight Manager Information System base on MassageAbstractWith the continuous improvement of science and technology, computer science and the maturing of its powerful features have a profound understanding of people has access to all areas of human society and play an increasingly important role. Continue to lower the cost of mobile phones, making mobile phone has become an essential life of each person communication tool, whereas the traditional cargo information systems to the freight company can not provide real-time news, information, or hinder the lag to reduce the cost of the logistics industry, so we will short message system and the characteristics of freight information system was developed to combine SMS freight information system. This will make it possible shipment information will be launched quickly to bear the freight side of the phone, so that not only guarantees the real-time news, but also reduces the logistics flow of time in waiting time costs.The subject system uses the Short Message freight VC Plus-Plus 6.0 and tools developed by Access, the application of database SQL query to amend, delete, query and other operations, the application of ODBC technology to connect applications and databases. The main achievement of the information systems function modules: Member information management, vehicle-information management, supply information management, short message, short message acceptance, system management. This system contact surface friendly, operation simple, quite is practical.Keywords: VC+6.0,Access,CMPP, Message,ODBC,MIS- 2 -贵州大学本科毕业论文目 录摘要1Abstract21引言11.1系统设计的背景11.2论文的组织结构12系统设计32.1需求分析32.1.1功能的需求32.1.2性能的需求32.2系统设计42.3数据库的设计62.3.1数据流62.3.2数据库设计73开发技术介绍103.1Visual C+6.0介绍103.2数据库Access介绍113.2.1与数据库相关的概念113.2.2Access数据库基本特点123.2.3Access数据库及其基本操作133.3VC及其数据库访问技术原理143.3.1ODBC API(开放数据库连接)143.3.2MFC ODBC类143.3.3MFC DAO(数据访问对象)编程153.3.4OLE DB163.3.5ActiveX数据对象(ADO)173.4CMPP协议9173.4.1CMPP协议简介173.4.2CMPP交互模式183.4.3SP端开发194系统开发294.1数据库连接部分294.2短消息结发功能324.2.1api-hw华为CMPP3.0短信网关API324.2.2短消息收发算法335系统操作说明375.1数据源的添加375.2登录界面395.3系统主界面405.4会员管理405.5车源管理415.6货源管理426结束语43参考文献44致谢4546- -1 引言作为本文的开篇之作,本章首先介绍了本课题的意义和研究现状,然后介绍了研究方法,最后介绍了文章的结构。1.1 系统设计的背景随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,已进入人类社会的各个领域并发挥着越来越重要的作用。21世纪以来,已经进入了网络经济的时代,电子商务使得商品交换发生了巨大的变化,不但缩短了交易时间、加快了交易速度,还大大降低商业交易的成本。因此,未来的流通时间和流通成本绝大部分将被物流所占有,物流对未来经济发展会起到非常巨大的决定和制约作用。货运信息系统能够减少物流在商品流通时间上所占有的时间,减轻物流对未来经济的制约。1手机成本的不断降低,使得手机已经成为每个人生活必备的通讯工具,而传统的货运信息系统不能给货运公司提供实时的消息,消息的滞后性还是阻碍了物流业的成本降低,因此我们将短消息系统和货运信息系统的特点相结合开发了短消息货运信息系统。这样就能够将得到的货运信息快速的发动到货运承担方的手机中,这样不但保证了消息的实时性,还降低了物流在流通时间中等待时间的成本代价。短信信息系统现在已经是很成熟的一个研究领域了,它已经应用到了很多领域,例如农业方面有农信通短信信息系统2、省域公路网出行者信息系统3、患者管理信息系统4等等。但是现在的货运信息系统本课题主要应用了华为CMPP3.0短信网关开发库,应用了Access数据库,通过VC6平台设计并实现了短信息货运系统。1.2 论文的组织结构本文结构如下:第一章,简单介绍了本课题研究的意义、研究背景、研究内容、研究方法。第二章,详细介绍了系统的设计过程,针对短消息货运信息系统得需求,通过软件工程方法和UML对系统进行了详细的设计。第三章,对本课题用到的技术进行了简单地陈述,VC+6.0的简要介绍、Access的简单介绍,以及经少了Access和VC+6.0之间的连接方法,最后介绍了CMPP协议。第四章,针对系统详细设计中的编码部分作了详细的介绍,重点介绍了数据库的连接方法。第五章,主要是对系统功能的展示,同时简单介绍了系统的使用方法。第六章,对以上工作的总结。2 系统设计本章主要通过对需求的分析,和对数据流的分析,介绍了系统的概要设计和数据库设计内容。2.1 需求分析2.1.1 功能的需求本系统主要是对货运信息的处理,因此本系统必须拥有的功能有:货源信息的管理、车源信息管理、会员信息管理、系统管理和短消息发送。短消息发送功能:主要是根据系统中存储的货源信息,自动的发送短消息,不用人工参与,这样能够保证了信息的实时性和有效性。货源信息管理:在货源信息管理部分要有对能能够对货源信息进行添加,将新得到的货源信息的需求添加到系统当中,同时也要存在对需求的查找、删除、修改和浏览功能。车源信息管理:在车源信息管理当中,要能够实现对车源信息查询、修改、删除、修改、添加等功能。会员信息管理:对于会员信息的管理,主要是针对不同类型的会员,提供查找、删除、修改、添加、修改等等的功能。系统管理功能:对系统的一些基本设定功能的一些修改。2.1.2 性能的需求短消息货运系统是一个单机应用系统,所以对操作性能的要求应该尽可能的底,对计算机的硬件的要求应该尽可能的少,具体各方面的性能要求预期有如下几方面:(1) 操作系统的选择:因为短消息货运系统是一个简单的单机版应用系统,除了它能够通过短消息发送货运信息以外,本系统其实是一个很典型的信息管理系统,所以在本系统应该能够运行在但前流行的操作系统上,而此 操作系统必须是贫民化和通用化的,因此笔者选择了微软出品的操作系统为本系统的运行条件之一,基于MFC来开发本系统,并且能够运行在Windows XP以上所有的操作系统之上。(2) 硬件的要求:由于短消息货运信息系统是运行在Windows XP之上的,因此,能够运行XP的计算机都能够安装并且运行本信息系统。(3) CMPP接口的选择:现在很多厂商都提供了CMPP网关接口,例如华为、亚信、清华深讯、卓望和东软等,由于硬件条件,各个接口的动态链接库熟悉程度,选择了api-hw华为CMPP3.0短信网关。2.2 系统设计根据短消息货运系统的需求分析,设计出本系统的框架图如下图所示:图 2.1 短消息货运系统框架其中,在短消息货运信息系统中的抓哟功能就是对会员信息、车源信息、货源信息等方面的录入、修改、删除等操作,当存在货源信息的时候,本系统就会通过CMPP的网关将短消息发送到移动网络,对应的手机终端就收到了对应的信息,同时手机终端也可以通过短信息回复于短信息货运系统建立交互。下图为短信息货运系统的用例图。图2.2 短消息货运信息系统用例图短消息货运信息系统是通过系统数据库将本机货运信息和移动网络联系到一起的,通过系统数据库,系统使用者将会员信息、车源信息、货源信息等等记录到数据库中,当存在货源信息的时候,短消息发送功能模块将数据库中的对应的消息读取出来,听过CMPP网关发送出去,如果有消息从网络中被接收到,也是通过消息接收接口存入系统数据库,然后,系统在读取数据库中对应的记录并显示。下图是本系统的系统结构图。图2.3 短消息货运信息系统系统结构图通过对系统的各个功能模块的划分,和对系统结构的详细设计,笔者设计了本信息系统的类图,如下图所示。图 2.4 短消息货运系统的类图其中CDbGuanliyuan、CDbCheyuan、CDbFasong、CDbFasongLishi、CDbHuiyuan、CDbHuoyuan、CDbJieshou、CDbJieshouLishi是继承自CRecordset类,都是和数据库进行交互的类。而CDuanxinHuoyun依赖于上述八个数据库类,并且CDuanxinHuoyun与CMPP网关类pSmsInit、pSmsLogin、pSmsSend是复合关系。2.3 数据库的设计2.3.1 数据流根据以上的系统功能描述,设计出顶层数据流图如下:货源信息操作结果系统管理会员信息车源信息货源信息短消息货运系统管理员短消息收取终端短消息货运系统图2.5 顶层数据流图2.3.2 数据库设计通过对系统的分析和对数据流的分析,对系统数据库的设计如下所示:表2.1 会员信息表列名数据类型说明bianhao长整形(8)会员编号huiyuanxingming文本(20)会员姓名leixing文本(10)会员类型,用于区分车主或是货主dianhua文本(20)会员电话号码dizhi文本(100)会员通讯地址表2.2 车源信息表列名数据类型说明bianhao长整形(8)车源编号shifadi文本(100)始发地mudidi文本(100)目的地zaizhong整形(10)车辆载重dianhua文本(20)车主电话号码shijian文本(100)时间表2.3 货源信息表列名数据类型说明bianhao长整形(8)货源编号shifadi文本(100)始发地mudidi文本(100)目的地zhongliang整形(10)重量dianhua文本(20)货源电话号码Shijian文本(100)时间wupin文本(255)物品名称表2.4 管理员信息表列名数据类型说明bianhao长整形(8)管理员编号username文本(100)管理员名称userpwd文本(100)密码表2.5短信息发送信息表列名数据类型说明bianhao长整形(8)发送短信息编号yuanhaoma文本(100)发送端原号码mudihaoma文本(100)目的端号码duanxinneirong文本(255)短消息内容表2.6短信息发送历史记录表列名数据类型说明bianhao长整形(8)发送短信息编号yuanhaoma文本(100)发送端原号码mudihaoma文本(100)目的端号码duanxinneirong文本(255)短消息内容表2.7短信息接收信息表列名数据类型说明bianhao长整形(8)发送短信息编号yuanhaoma文本(100)发送端原号码mudihaoma文本(100)目的端号码duanxinneirong文本(255)短消息内容表2.8 短信息接收历史记录表列名数据类型说明bianhao长整形(8)发送短信息编号yuanhaoma文本(100)发送端原号码mudihaoma文本(100)目的端号码duanxinneirong文本(255)短消息内容3 开发技术介绍3.1 Visual C+6.0介绍一种语言只有在一种界面化的开发工具下,才容易被推广和流传。Visual C+ 6.0就是微软公司推出的C+开发工具,是使用最广的开发工具。本节介绍Visual C+ 6.0工具的开发环境和开发流程。 Microsoft Visual C+ + 6.0(简称VC+ 6.0 ),是微软可视化编程套件Visual Studio 98中的重要组成部分。这套功能强大的Windows应用程序开发系统是由Microsoft C/C+演化而来的。从Microsoft C/C+开始改称为Visual C+,一直发展到今天的Visual C+6.0。由于同是微软的产品,Visual平台是当前Windows应用开发系统中与Windows平台本身支持最彻底的开发平台。Visual C+6.0包含了支持Windows 95 , Windows NT 4.0以及Windows 98的Win32 SDK文档,即人们可以在Visual C+环境下使用Windows SDK的SDK文档提供的API来进行Windows应用程序的开发。Visual C+6.0采用的是32位编程方式,也就是说其生成的程序是在像Windows 95,WindowsNT4.0和Windows98等这样的32位操作系统下运行的。VC+6.0继承了其以前版本的最主要的技术特点:可视化编程和支持面向对象的编程。它提供了一系列可视化编程的工具,如AppWizard和C1assWizard等。它们使Windows编程更为直观。VC+6.0支持的面向对象的编程技术包装了Windows内在的复杂的运行机制,通过微软基础类库MFC,使Windows编程更为简单易学。此外,VC+6.0还具有其他技术特点:如通过ActiveX技术来支持Internet编程,支持ODBC数据库编程等。VC+6.0是一个非常强大的开发工具,一旦掌握它,就可以编制出你想要的应用程序。9VC+6.0的开发过程如下:Visual C+ 6.0编译器负责将C+源代码编译成汇编文件,转换为中间文件(obj文件),然后使用连接器将相关的中间文件连接在一起,生成可执行的二进制文件。其过程如下:(1)源程序经过预处理后交给编译器。(2)如果代码无误,编译器将代码生成汇编程序,再生成若干个目标程序(obj文件)。(3)链接器负责将目标程序进行连接,生成可执行的程序。3.2 数据库Access介绍Access就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许创建自定义报表用于打印或输出数据库中的信息。Access 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Access 作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。3.2.1 与数据库相关的概念(1)数据库数据库(Database)就是按一定的结构组织在一起的相关数据的集合。对于一个特定的数据库来说,它是集中、统一地保存、管理着某一单位或某一领域内所有有用信息的系统。这个系统根据数据间的自然联系结构而成,数据较少冗余,并且具有较高的数据独立性,能为多种应用服务。如,学校中的所有学生的档案,公司企业的人事档案和有关的商务信息等5。(2)数据表数据表(Table)可以比喻成一个存放原始数据的特定容器,是一种有关特定实体的数据集合。在一个数据表中,常常可以按照行或列的格式组织数据。对于每个实体分别使用的数据只需存储一次。这将提高数据库的效率,并减少数据输入错误。早期数据库系统的数据库,表和数据库是同一个概念,如dBase等,现在的数据库和表是不同的概念,如Access等。比如说,在学校中关于学生信息的数据保存在一个表中,而有关学生的成绩保存在另一张表中,两张表通过一定的关系联系到一起5。(3)记录和字段数据表可以被分为行和列,行称为记录(Record),列称为字段(Fields)。在表中同一行数据被称为一条记录。每一个信息行都可以设想为一个单独的实体,它可以根据需要进行存取或排列。例如,在前面所举的例子中,将学生表中的涉及同一学生的信息就包含在一条记录中。记录通常通过记录在数据表中的唯一的数据值来识别,这个数据值通常被称为主键。在表中同一列数据具有相似的信息,这些数据的列条目就是字段。例如:学号、姓名等等。每一个字段都通过明确的数据类型来进行识别,常见的数据类型有文本型、数字型、货币型等,字段必须定义特定的长度,每个字段在顶行用一个名字来表明其具体信息类别5。(4)数据值数据表中的行和列,即记录与字段的相交处就是值存储的数据元素。数据值的特点是不唯一性,在同一个表中,同一个值可能会重复出现。而每个数据值的字段和记录却是唯一的,字段可以用字段名来识别,记录则通常通过记录的某些唯一的特征符号来识别5。J.Martin给数据库下了一个比较完整的定义:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个数据库集合6。3.2.2 Access数据库基本特点Access是一个前后台结合的“软件”。 也就是说Access既拥有用户界面(VB可以用来开发用户界面);也拥有逻辑、流程处理,即VBA语言(VB也可以用来做逻辑处理);又可以存储数据,即在“表”中存储数据。而所有这些都存储在一个MDB格式的文件中(当然,也可以是MDE等格式) Access不是一种存储格式,是一种软件。其基本特点如下7:Access是一个中、小型关系数据库管理系统。Access又是一个完全面向对象,采用事件驱动机制的最新关系数据库管理系统,使得数据库的应用与开发更加便捷、灵活。Access是一个同时面向数据库最终用户和数据库开发人员的关系数据库管理系统。Access是一个典型的开放式数据库管理系统。Access支持多媒体的应用与开发。 Access既可以在单用户环境下工作也可以在多用户环境下工作,并且具有完善的安全管理机制。Access内置了大量的函数。Access提供了许多宏操作。Access提供了联机帮助功能。3.2.3 Access数据库及其基本操作新建数据库:使用Access2002新建一个数据库有两种方法:一种是创建一个空数据库,即建立一个没有表、查询、窗体和报表等内容的数据库;另一种方法是使用Access中提供的数据库模板创建数据库,即通过对向导所提出的选项和不同选择来设计窗体、查询和报表等,从而建立一个完整的数据库。本系统采用了第一种方法设计数据库。第一步,在Access窗口中单击“文件(F)”菜单,在下拉菜单中选择“新建”项;第二步,双击“数据库”图标,即会显示“文件新建数据库”对话框;第三步,在文件名文本框中输入要保存数据库的文件夹及新建的数据库名,如“D:DataMassage”,然后选择“确定”。即可创建好一个名为“DataMassage”的数据库8。创建数据表:表是Access数据库的基础,是信息的载体。其它对象如查询、窗体和报表,也是将表中的信息以各种形式表现出来,方便用户使用这些信息。在Access中,创建表的方法有三种:一是使用设计器创建表;二是通过输入数据创建表;三是利用向导创建表。在这里,我们采用第二种方法创建表:在中文Access 2000中,可将数据直接输入到空白的数据表中,然后当保存这张新的数据表时,这个软件能分析数据并且自动为每一字段指定适当的数据类型及使用格式。为了执行该操作,首先要在数据库窗口中选定“对象”列表中的“表”项,然后单击工具栏中的“新建”按钮,进入“新建表”对话框后通过列表中的“数据表视图”项,此后,屏幕上将显示一个空数据表提供有默认的列名称,即字段:字段1、字段2,。此时,可以立即输入数据记录,建立数据表了8。3.3 VC及其数据库访问技术原理文献11中详细介绍了VC+6.0提供的各种数据库编程接口,从功能简单的数据库到复杂的大型数据库系统,笔者将最常用的数据库接口既ODBC API、MFC ODBC类、MFC DAO类 (数据访问对象)、MFC的OLE/DB、ActiveX数据对象(ADO)简单得进行一下介绍。3.3.1 ODBC API(开放数据库连接)开放数据库接口提供了一个通用的编程接口,允许程序与多种不同的数据库连接。它为Oracle,SQL Server,MS Excel等都提供了驱动程序,使得用户可以使用SQL语句对数据库进行直接的底层功能操作。在使用ODBC API时,用户须引入的头文件为sql.h,sqlext.h,sqltypes.h。用ODBC API创建数据库应用程序遵循一定的基本步骤:第一步是分配ODBC环境,使一些内部结构初始化。完成这一步,须分配一个SQLHENV类型的变量在ODBC环境中做句柄使用。第二步是为将要使用的每一个数据源分配一个连接句柄,由函数SQLALLocHandle()完成。第三步是使用SQLConnect()把连接句柄与数据库连接,可以先通过SQLSetConnectAttr()设置连接属性。然后就可以进行SQL语句的操作,操作完成后,用户取回相应的结果,就可以取消与数据库的连接。最后需要释放ODBC环境。ODBC API的特点是功能强大丰富,提供了异步操作,事务处理等高级功能,但相应的编程复杂,工作量大。3.3.2 MFC ODBC类MFC1.5后的版本里引入封装了ODBC功能的类。通过这些类提供与ODBC的接口,使得用户可以不须处理ODBC API中的繁杂处理就可以进行数据库操作。主要的MFC ODBC类如下。CDatabase类:一个CDatabase对象表示一个到数据源的连接,通过它可以操作数据源。应用程序可使用多个CDatabase对象:构造一个对象并调用OpenEx()成员函数打开一个连接。接着构造CRecordSet对象以操作连接的数据源,并向CDatabase对象传递记录集构造程序指针。完成使用后用Close()成员函数销毁CDatabase对象。一般情况下并不需要直接使用CDatabase对象,因为CRecordSet对象可以实现大多数的功能。但是在进行事务处理时,CDatabase就起到关键作用。事务(Transaction)指的是将一系列对数据源的更新放在一起,同时提交或一个也不提交,为的是确保多用户对数据源同时操作时的数据正确性。CRecordSet类:一个CRecordSet对象代表一个从数据源选择的一组记录的集合-记录集。记录集有两种形式:snapshot和dynaset。前者表示数据的静态视图,后者表示记录集与其他用户对数据库的更新保持同步。通过CRecordSet对象,用户可以对数据库中的记录进行各种操作。CRecordView类:CRecordView对象是在空间中显示数据库记录的视图。这种视图是一种直接连到一个CRecordSet对象的格式视图,它从一个对话框模板资源创建,并将CRecordSet对象的字段显示在对话框模板的控件里。对象利用DDX和RFX机制,使格式上的控件和记录集的字段之间数据移动自动化,也就是说,用户甚至不要编写一行代码就可以实现简单的数据库记录查看程序。CDBException类:由Cexception类派生,以三个继承的成员变量反映对数据库操作时的异常:m_nRetCode:以ODBC返回代码(SQL_RETURN)的形式表明造成异常的原因。m_strError:字符串,描述造成抛出异常的错误原因。m_strStateNativeOrigin:字符串,用以描述以ODBC错误代码表示的异常错误。MFC数据库类成员函数都能抛出CDBException类型的异常,所以在代码对数据库进行操作后监测异常是正确做法。MFC ODBC类在实际开发中应用最广,因为它功能丰富,操作相对简便。3.3.3 MFC DAO(数据访问对象)编程DAO用于和微软的Access数据库接口。在数据库应用程序如果只需与Access数据库接口时,使用DAO编程较方便。其主要类如下。CDaoWorkspace:CDaoWorkspace对象可以让一个用户管理从登陆到离开期间,指定的密码保护的数据库会话全过程。大多数情况下不要多个工作区也不要创建明确的工作区对象。因为在打开数据库和记录集对象时,它们可以使用DAO缺省工作区。CDaoDatabase:代表一个连接,类似上述CDatabase类。CDaoRecordSet:用来选择记录集并操作,类似上述CRecordSet类。CDaoRecordView:类似上述CRecordView类。CDaoException:类似上述CDBException类。CDaoTableDef:表示基本表或附加表的定义。每个DAO数据库对象包括一个称为TableDef的收集,包含所有存储的DAO表定义对象。CDaoTableDef对象可以用来控制表定义。CDaoQueryDef:CDaoQueryDef对象表示了一个查询定义(querydef)。CDaoFieldExchange:支持数据库类使用的DAO字段交换(DFX)例程。也可处理事务,类似MFC ODBC类。MFC DAO仅用来支持Access数据库,应用范围相对固定。3.3.4 OLE DBOLE DB在数据提供程序和用户之间提供了灵活的组件对象模型(COM)接口,这种灵活性有时会使得操作复杂化。OLE DB框架定义了应用的三个基本类。数据提供程序Data Provider:拥有自己的数据并以表格形式显示数据的应用程序。提供OLE DB的COM接口,期显示范围可以从单一数据表格的简单提供者知道更复杂的分布式数据库系统。使用者Consumers:使用OLE DB接口对存储在数据提供程序中的数据进行控制的应用程序。用户应用程序归为使用类。服务提供程序Service Provider:是数据提供程序和使用者的组合。服务提供程序没有自己的数据,但使用。OLE DB使用者接口来访问存储在数据提供程序中的数据。然后,服务提供程序通过打开数据提供程序接口使得数据对使用者有效。服务提供程序常用于向应用程序提供高层次服务,比如高级分布式查询。OLE DB编程时,用户使用组件对象开发应用程序。这些组件有枚举器:用于列出可用的数据源;数据源:代表单独的数据和服务提供程序,用于创建对话;对话:用于创建事务和命令;事务:用于将多个操作归并为单一事务处理;命令:用于向数据源发送文本命令(SQL),返回行集;错误:用于获得错误信息。3.3.5 ActiveX数据对象(ADO)ADO是微软提供的面向对象的接口,与OLE DB类似,但接口更简单,具有更广泛的特征数组和更高程度的灵活性。ADO基于COM,提供编程语言可利用的对象,除了面向VC+,还提供面向其他各种开发工具的应用,如VB,VJ等。ADO在服务器应用方面非常有用,特别是对于动态服务器页面ASP(Active Server Page)。ADO对象结构类似于OLE DB,但并不依靠对象层次。大多数情况下,用户只需要创建并只使用需要处理的对象。下面的对象类组成了ADO接口。Connection:用于表示与数据库的连接,以及处理一些命令和事务。Command:用于处理传送给数据源的命令。Recordset:用于处理数据的表格集,包括获取和修改数据。Field:用于表示记录集中的列信息,包括列值和其他信息。Parameter:用于对传送给数据源的命令之间来回传送数据。Property:用与操作在ADO中使用的其他对象的详细属性。Error:用于获得可能发生的错误的详细信息。在VC+使用ADO需要进行COM操作,详细方法在此就不赘述了。在当今流行的分布式开发环境下,VC+6.0在数据库开发方面有较强的优势,学会在不同的场合选用不同的技术,对开发人员来说是必要的技术。3.4 CMPP协议93.4.1 CMPP协议简介中国移动通信互联网短信网关接口协议(China Mobile Peer to Peer CMPP),是中国移动梦网内部各SMS参与节点相互交换SMS的官方协议。作为梦网的参与方,移动梦网的增值服务商(Service Provider SP )要按照此协议规范实现SP的部分,才可以将自己的短信通过移动的GSM网络的数据通道传输到最终手机用户上。实际上,协议规范了3个方面的内容:SP与移动的互联网短信网关(Internet Short Message Gateway,ISMG)之间的接口协议。ISMG之间的接口协议(譬如移动各省、市之间的短信息交换通过ISMG之间进行)。ISMG与汇接网关(Gateway Name Server GNS,类似互联网上的DNS服务器)之间的接口协议,譬如跨省之类的短信需要GNS的帮助指出当前ISMG该如何传递短信。其中,后二方面属于移动短信息系统内部实现,对于SP来讲大概可以“透明”来看待,只要实现了SP同ISMG的正确交互,就可以实现接入移动梦网短信系统。我们关心的只是SP端的开发细节。3.4.2 CMPP交互模式从手机用户角度讲,按短信的发起/接收路径来讲,有两个叫法:MT(Short Message Mobile Terminated, SMMT),短信接收,短信从SP发送到手机用户。MO (Short Message Mobile Originate,SMMO),短信发送,短信从手机用户端发送到目标SP。这两类短信交互,从SP端来看,都是属于Socket传输应用,CMPP的协议是以TCP/IP协议作为底层承载协议的,属于TCP/IP协议栈之上的应用。SP同ISMG的交互连接分长连接和短连接。所谓短连接,就是一次连接,传输一个消息,然后等待回复后拆除连接,显然,效率很低,所以,基本上不被考虑.所谓长连接,就是SP建立同ISMG连接,然后不断将数据包(一个个CMPP消息)发送到ISMG,此处发送不必等待某条消息的ISMG回应消息返回,就接着发送下一个消息。同时,等待ISMG返回信息或者等待ISMG发送给SP的消息。发送同接收消息不是一定要同步的,实际采用异步(同时也时双工)模式。从效率上,显然,必须全双工的异步模式才能够满足实际应用需求。图3.1 长连接模式数据传输过程3.4.3 SP端开发(1) 消息分类首先,图中的CMPP消息有很多种,SP同ISMG之间交流这些消息。大体上这些消息发出后,对方往往需要回复一个应答(RESP)类消息。注意,这些消息大多具有方向性,也就是说只能够从一端到另一端,而不可反方向进行,有些(少数)则可两端都能够发出。具体见下表:表3.1 消息说明 消息名传递方向解释说明CMPP_CONNECTSP-ISMGCMPP_CONNECT操作的目的是SP向ISMG注册作为一个合法SP身份,此消息需要向ISMG发出验证信息,验证方式采用md5加密密码方式,若注册成功后即建立了应用层的连接(否则ISMG会立即断开Socket),此后SP可以通过此ISMG接收和发送短信。ISMG以CMPP_CONNECT_RESP消息响应SP的请求。具体的算法实现参考CMPP2.0文档和本文附件代码。CMPP_CONNECT_RESPSP-ISMGISMG对CMPP_CONNECT消息的回复(无论是否验证成功);如果未通过,会在消息中包含参考信息,但ISMG会立即断开连接。CMPP_ACTIVE_TESTSPISMG这个消息通信双方都可以发出,目的是在没有其他消息发送时,保持双方的通信链路的连接,避免系统认为通信通道已经关闭。每一个收到此消息的实体应当返回CMPP_ACTIVE_TEST_RESP消息,以“礼节性”表示自己的还在通信,维持数据连接有效性。不过,据网友交流,有些厂家实现的ISMG,仅仅靠自己发出此消息等待SP回答CMPP_ACTIVE_TEST_RESP来确定数据链路的有效性,而忽略SP的CMPP_ACTIVE_TEST消息(有些霸道吧?)这个值得注意,不要仅仅实现发送而不响应此消息,避免数据连接失效。CMPP_ACTIVE_TEST_RESPSPISMG对通信的另一端的CMPP_ACTIVE_TEST消息的回复。作用参考CMPP_ACTIVE_TEST的解释。CMPP_SUBMITSP-ISMG在正确建立了数据连接后,SP向ISMG发送一个SMS数据包。本消息需要仔细研究。接收到此消息后,ISMG需要以CMPP_SUBMIT_RESP消息作为回答。如果在一定时间时间内(移动给出的参考值60秒)内未得到消息回应,那么SP需要重新发送此数据包,以确保消息得到投递。如果重发达到3次后仍然得不到回应,SP端应该考虑可能ISMG已经失效,应当停止发送此短消息。CMPP_SUBMIT_RESPSP-ISMG该消息由ISMG发送给SP,同时返回一个“收条”(源CMPP_SUBMIT消息的ISMG端的标示MSGID)给SP,表示“我ISMG已经确认收到你这条消息了”。收到此消息后,SP需要保留此“收条”,因为后面ISMG会最终报告本消息是否正确发送到用户手机。那个报告就是以此消息的“收条”作为确认那一条消息的。CMPP_QUERYSP-ISMG这个查询不是查询单条消息的,是查询SP发送给ISMG的短信的业务情况。可以查总计数,还可以分类查询。(基本就是发起对移动sms业务数据库的查询统计)CMPP_QUERY_RESPSP-ISMGISMG将查询的数据返回给SP。CMPP_CANCELSP-ISMGSP发起的取消某条消息的命令消息,其中包含了之前已经发送给ISMG消息的“收条”以便ISMG可以确定是那一条消息。如果消息已经发送给用户了,那么此消息/命令会无效,ISMG返回失败。CMPP_CANCEL_RESSP-ISMGISMG返回的对CMPP_CANCEL的回复,并告知是否删除成功。CMPP_DELIVERSP-ISMG当有MO或者状态报告时,ISMG发送此消息。注意,此消息的数据可以是用户手机发送给SP的消息,也可是对于之前SP发送到ISMG的短信的最终状态的回复,报告短信的最终状态。CMPP_DELIVER_RESPSP-ISMGSP礼节性的回复告知收到CMPP_DELIVER消息。要指出SP报告的CMPP_DELIVER消息的MSGID,以便ISMG知道那一条消息SP已经确认收到。CMPP_TERMINATSPISMGSP和ISMG都可以主动发消息给对方,自己这端由于某种原因需要终止当前的数据连接。终止后,要经过重新Connection(验证)之后才可以(进入事务阶段)发送SMS数据消息。CMPP_TERMINATE_RESSPISMG通知对方,本端已经最好撤除连接的准备。(2) 交互阶段整个CMPP协议交互分为验证、事务两个阶段。验证阶段,发送CMPP_CONNECTION消息进行验证,通过验证后(必须要通过才)进入CMPP事务阶段,可以发送短信数据了。上表中的CMPP_CONNECTION以下的消息都属于事务阶段的消息。(3) 消息数据结构每一个消息包含 消息头 和 消息体两个部分,头固定长度为12字节,其他消息长度各异,但是同一类型消息的长度是固定的。所有消息的各个字段基本上仅有3种类型:Unsigned Integer (无符号整型) 、Integer(整型)、Octet String(字符串),每种类型具体长度不定,网络字节顺序。消息头(3个Unsigned Integer字段组成):4字节的Total_Length (Unsigned Integer),包含了此消息的总计(包括了头部分)长度。4字节的Command_Id(Unsigned Integer),指明了此消息到底是什么消息,就是上表中消息的枚举值。应用程序根据此值确定本数据包到底是什么消息,从而可以按照确定的消息类型,解析余下的消息体。4字节的Sequence_Id(Unsigned Integer),指明了此数据包在发送此消息端的唯一编号。这个唯一编号,实际上可以看作流水操作编号。因为分析到交互模式我们看到,SP发送数据到ISMG,不是每发送一个就停下来等待ISMG的回复,而是“一下子”发送多个数据包过去,然后等待ISMG的回应。然而,怎么知道回应的消息是到底对应之前发送过去的消息中的那一条呢?本字段就是解决此难题。SP按照编号发送消息过去,等待ISMG的回应一般情形下回应消息数据结构都有表明本消息回应的是SP发出的哪一条消息,这个对应就是依靠Sequence_Id。它并不要求一定要严格唯一,但是在给定的一段时间内,必须唯一(基本上只要SP发送过去的消息中没有重复就行了)。如果是需要SP回答的消息,SP也必须将ISMG发送过来的消息的Sequence_Id填入相应字段,表明这是某个消息的回应。SP端和ISMG端Sequence_ID都没有确定具体的算法。SP可以(但不推荐)采用数据库的唯一Id作为此值。消息体。消息体根据消息不同,长度不一。其他的参考移动的文档中国移动通信互联网短信网关接口协议(China Mobile Peer to Peer, CMPP),这里就已CMPP_SUBMIT的消息体为例。表3.2 CMPP_SUBMIT的消息字段名字节数属性描述Msg_Id8Unsigned Integer信息标识。Pk_total1Unsigned Integer相同Ms

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论