《2022年2022年基于CMPP协议的短消息网关设计 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年基于CMPP协议的短消息网关设计 .pdf(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘要本文介绍了短信网关(ISMG)在无线互联网短消息业务中所起的重要作用。ISMG 为服务提供商(SP)与短消息中心(SMSC)之间的数据交换提供了一条安全、快捷的通道,以便手机用户采用短信方式与SP双向通信,接收 SP 提供的信息服务。本文提供WINDOWS下统一的编程接口,通过本接口,还开发了SP应用程序(作为客户端连接 CMPP 网关,进行短信收发)。本课题的主要工作是封装CMPP 协议,实现短消息网关的接口程序。接口程序以动态链接库的形式导出API接口类,提供其成员函数和成员变量供SP 应用程序调用。CMPP 协议 API接口是 SP 客户端应用系统接入短消息网关的通信桥梁。并采用卓越
2、短信网关模拟器对本接口程序进行测试充分验证了短信平台的正确性、稳定性。关键词:短信网关;CMPP;API接口1 绪论1.1 短信业务发展现状及有关业务种类2001年,整个中国的短信发送量不过170亿条,到了 2002年猛增到 900亿,而去年,又几乎实现翻番,达到2200多亿条,而中国移动短信发送量就达1700亿条。短信在中国互联网市场上的作用举足轻重。在电信运营瓶中,最先推出短信息业务的是中国移动,其“移动梦网”已掘到了市场的第一桶金。如此大的业务量,让中国移动和参与的 ICP们尝到了甜头,也使运营商走出传统定格,向众多的应用内容、应用服务提供商提供一个大舞台,实现开放、公平的接入。也正因如
3、此,联通对于短信息业务关注了很长时间。2001年8月1日,中国联通正式推出了其无线数据业务的统一品牌“联通在信”,正式要与“移动梦网”比个高低上下。作为中国最大的电信运营商,中国电信拥有最大的用户群体、强大的网络支撑和丰富的内容服务经验,一旦大规模推出固定短信息业务消息定制类、信息点播类的“移动梦网”业务将会受到较大的冲击,部分业务收入将会被分流1。下面以“移动梦网”为例介绍一下与各SP 合作向用户提供的短信信息服务的种类。“移动梦网”提供的短信信息服务种类行信息服务、娱乐服务、位置服务、通信服务和商务服务。1.2 短信信息服务的发展阶段从短信业务的发展来看,短信信息服务的发展经历了下述三个时
4、期:1)第一阶段,短信信息服务的独立发展时期,在此阶段,短信中心是唯一的信息提供者及数据传输通道,造成信息量少,且各短信中心的信息来源不一致。2)第二阶段,短信业务的急剧扩展时期,以互联网上的信息作为短信的主要信息来源,由互联网上的 SP 直接与各 SMSC 相沟通,建立信息交换的接口。3)第三阶段,目前短信业务正处在业务发展的第三阶段,其主要的业务特征模式就是依附与原有的手机信息传递方式(短消息),将互联网上的巨大信息量根据用户的要求通过手机的短消息方式传递给用户。这一发展模式,将传统的信息提供与信息服务的合二为一彻底分离,体现了一种传统业务与互联网相结合的发展模式 2。1.3 本文的内容和
5、研究的意义随着通信技术的发展,无线互联网短消息业务正在为用户提供越来越多的服务。目前,大部分短消息业务的互联互通都是使用短消息网关来实现,主要服务提供商 SP 与短消息网关之间通过二进制的 CMPP(中国移动点对点协议)接口进行信息交换。本文的工作是构建一个编程实现短信息网关接口的简单模型,开发出实现 CMPP 协议的短信网关动态链按库,并实现 SP 客户端的短信功能。而且自己开发实现 CMPP 的好处在于可以用一套名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 19 页 -平台,只需稍加修改甚至不用修改就可以应用到不同的网关。名师资料总结-精品资料欢迎下载-名师精心整理-第 2
6、 页,共 19 页 -2 短信网络分析2.1 短信网络概述GSM 系统除了提供电路交换的各种电信业务和承载业务外,还提供基于分组交换的短消息业务。短消息(Short Message)是通过移动网络传输的有限长度的文本信息。在GSM 网中发送短消息是通过复用信令控制信道SDCCH或SACCH传输的。当话音信道 TCH 空闲时,短消息采用独立专用控制信道 SDCCH传输,当话音信道 TCH 被占用时,短消息采用慢速随路控制信道SACCH进行传输,由于短消息不占用话音信道,因此,移动用户在处于完全通信状态下,仍然可以进行短消息的传输。2.2 短信网络系统结构短信网络结构如图 2-1所示。图2-1短信
7、网络结构SME:短消息实体,它可以接收或发送短消息,位于固话系统、移动基站或其他服务中心内。SMSC:短消息服务中心,负责在基站和 SME 间中继、储存或转发短消息;移动台(MS)到SMSC的协议能传输来自移动台或朝向移动台的短消息,协议名为SMTP。SMS_GWMS:SMS 网关,负责 MT 类型的业务,接收由 SMSC 发送的短消息,查询位置归属寄存器HLR 获得路由信息,然后经由 GSM 电路交换网络,将短消息传送给到 MS 所在的目的拜访移动交换中心 VMSC。HLR:归属位置寄存器,用于永久储存管理用户和服务记录的数据库,由SMSC 产生。SMS网关与 HLR 之间的协议使前者可以要
8、求HLR 搜索可找到的用户地址。MSC:移动交换中心。负责系统切换管理并控制来自或发向其他电话或数据系统的拨叫。VLR:访问位置寄存器,含有用户临时信息的数据库。交换中心服务访问用户时需要这些信息。BSS:基站系统,是移动终端通过无线信道接入网络的接口。MSC 与VLR、HLR、SMS_GWMS之间通过 7号信令网承载消息。MSC 与BSS 之间采用 2048kb/s 的E1线路承载消息3。2.3 短消息传输过程短消息传输过程可分为移动发起和移动接收过程。2.3.1 移动发起短消息传输过程移动发起短消息传输过程用于将短消息从移动用户(MS)传递给短消息业务中心(SMSC)。图2-2显示了这一过
9、程。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 19 页 -图2-2 MS发起短消息1)移动台(MS)向移动交换中心(MSC)提交短消息;2)MSC访问拜访位置寄存器(VLR)以请求移动台的用户数据;3)VLR向MSC 返回移动台的数据;4)MSC将移动台提交的短消息转发给互通SMS 网关(SMS IWMSC);5)互通SMS 网关将短消息提交给短信中心(SMSC);6)短信中心回应确认给互通 SMS 网关;7)互通SMS 网关回送确认给 MSC;8)MSC回应确认给移动台。2.3.2 移动接收短消息传输过程移动接收短消息传输过程用于将一个短消息或多个短消息从短消息业务中心(
10、SMSC)传递给移动用户(MS)。图2-3显示了这一过程。图2-3 MS接收短消息1)短信中心将短消息发到 SMS 网关;2)SMS网关向归属位置寄存器(HLR)查询目的手机的路由信息;3)HLR将手机的路由信息返回到归属位置寄存器;4)SMS网关根据返回的路由信息将短信发往手机所在的MSC;5)MSC向VLR 请求手机当前的状态信息;6)VLR向MSC 发送命令寻呼目的手机;7)MSC寻呼目的手机;8)手机响应 MSC 的寻呼,发起接入请求;9)MSC 向VLR 发送手机的接入请求;10)VLR 向MSC 回应手机的状态信息;11)MSC 将短消息发给手机;名师资料总结-精品资料欢迎下载-名
11、师精心整理-第 4 页,共 19 页 -12)手机回应短消息、证实消息给MSC;13)MSC 将发送成功消息发送给 SMS 网关;14)SMS 网关向短信中心 SMSC 发送短消息证实 4。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 19 页 -3 短信网关分析3.1 短信网关的引入在短信信息服务第二阶段业务发展的初期,一般采用SP 直接与某一个 SMSC 连接,由 SMSC直接通过信令网发送短信给用户的方式。但当SP 的短信信息服务业务量很大时,SMSC 负荷极大,难以满足业务发展的需要。因此,信息类短信的转发也要求采用GSM 网的规范做法。短信网关的应运而生可以将大量 S
12、P 接入到各地的 SMSC 上,保证接入的一致性及安全性。3.2 短信网关系统3.2.1 短信网关系统组成短信网关 ISMG 主要和三个实体相连:(1)短信服务参与实体服务提供商SP;(2)短信中心 SMSC;(3)汇接网关 GSN。3.2.2 短信网关系统功能短信网关包括与负责范围内SP 进行连接的通讯软件(采用CMPP 协议)。与负责范围内 SMSC相连的协议软件(采用SMPP 协议)。与其他 ISMG 进行连接的通讯软件(采用CMPP 协议)、业务处理软件等。短信网关各组成部分的功能为:(1)SMPP 代理系统支持流量控制功能,能够根据SMSC 的业务量进行发送流量控制。(2)通信代理系
13、统实现与 SP 等内容供应商的连接和协议互通。它基于 TCP/IP协议基础之上,利用CMPP 协议与 SP 之间建立一条安全、高效的传输通道。(3)防火墙:对短信网关内部其它相关模块进行保护,实现针对内外访问的包过滤和代理。(4)短消息网关处理系统完成网关的业务处理,包括:向汇接网关进行路由查询,在本地建立短信网关 ID、计费原始话单的提供及处理等。(5)短信网关计费系统提供短信网关的原始话单记录(CDR)。3.2.3 短信业务流程(1)用户发送短信业务-即MO 业务流程;(2)用户接收短信业务-即MT 业务。3.3 短信网关应用协议逻辑上,ISMG 为SMSC 的一个 SME 实体。它用来转
14、发手机的互联网应用请求,由于GSM 网络与互联网络是不同类型的两种网络,因此,在两网之间设置网关ISMG,用来转换协议:采用中国移动点对点 CMPP 协议与 SP 进行连接,采用短消息点对点 SMPP 协议与短信中心连接。从而提供 SP与SMSC 之间数据交换的通道,达到互联互通。实体之间底层均采用 TCP/IP协议,上层使用不同的应用层协议5。3.4 CMPP协议3.4.1 CMPP功能概述CMPP 协议主要提供以下两类业务操作:1.短信发送名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 19 页 -由图34可见需要前转的 MO 操作需要八个步骤:(1)手机发出数据请求(可能是
15、订阅信息或图片点播等),被源 ISMG 接收;(2)源ISMG 对接收到的信息返回响应;(3)源ISMG 在本地查询不到要连接的 SP,向GNS(汇接网关)发路由请求信息;(4)GNS将路由信息返回;(5)源ISMG 根据路由信息将请求前转给目的ISMG;(6)目的ISMG 对接收到的信息返回响应;(7)目的ISMG 将请求信息送 SP;(8)SP返回响应。在以上操作中,步骤 3到步骤 8均使用 CMPP 协议。典型的业务操作如图 3-1所示。图3-1 需要前转的 MO 操作在随后的操作中,目的 ISMG 在接收到 SP 的响应后将产生 M0 状态报告发给源 ISMG。2短信接收短信接收是短信
16、发送的逆过程:(1)SP发出数据请求,被源 ISMG 接收;(2)源ISMG 对接收到的信息返回响应;(3)源ISMG 在本地数据库中找不到要目的手机号段所对应网关代码,向GNS 发路由请求信息;(4)汇接网关将路由信息返回;(5)源ISMG 根据路由信息将请求前转给目的ISMG;(6)目的ISMG 对接收到的信息返回响应;(7)目的ISMG 将请求信息发送至 SMC;(8)SMC 向目的 ISMG 返回响应。在上述操作中,步骤 1到步骤 6均使用 CMPP 协议6。3.4.2 CMPP通信方式由于CMPP 协议是以 TCP IP协议作为底层承载,因此,SP 与ISMG 之间、ISMG 之间进
17、行信息交互时,可以采用长连接方式,也可以采用短连接方式。所谓长连接,指在一个TCP 连接上可以连续发送多个数据包,在TCP 连接保持期间,如果没有数据包发送,需要双方发链路检测包以维持此连接。短连接是指通信双方有数据交互时,就建立一个TCP 连接,数据发送完成后,则断开此 TCP 连接,即每次 TCP 连接只完成一对 CMPP 消息的发送。端口号分配如下表所示表3-1 端口号分配表端口号应用名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 19 页 -7890 长连接(SP 与网关间)7900 短连接(SP 与网关间或网关之间)7930 长连接(网关之间)9168 短连接(短信网关
18、与汇接网关之间)名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 19 页 -4 基于 CMPP 协议的短消息收发系统的总体设计4.1 短消息收发系统 SP客户端接入方式4.1.1 API 接入方式按照目前短消息服务接入实现,服务提供商 SP 与短消息网关之间通过二进制的CMPP(移动)协议接口或者 SGIP(联通)协议进行信息交换,SP 必须将消息按照 CMPP 或SGIP 协议来封装,对具体协议实现和消息包格式必须深刻了解。因此,本短消息收发系统为SP 客户端以动态链接库的形式提供API接入方式,即将 CMPP 封装起来并提供一个统一的接口。该方式具有以下优点:(1)为上层应用
19、客户端提供方便统一的短信收发服务;(2)屏蔽底层通信协议,应用客户端不必关心底层的网络通信过程;(3)屏蔽网关生产厂商和运营商,可以用一套平台,只需稍加修改甚至不用修改就可以应用到不同的网关。4.1.2 模拟网关中国移动 CMPP 模拟器是基于 CMPP V3.0 V2.0协议开发的,具有方便易用图形化的界面,专业级协议分析工具,是中国移动 SP 的开发利器,大大减少了开发成本,配合专用的手机模拟终端可以直接模拟手机用户收发短信,还可进行合有逻辑的压力测试,能充分检验短信平台的正确性、稳定性。功能介绍(1)按照CMPP V3.O,CMPP V2.0协议实现,支持 CONNECT,SUBMIT,
20、DELIVER(含状态报告),ACTIVE_TEST,TERMINATE消息。(2)根据客户端登录提交的版本号自动识别CMPP 协议版本。(3)手动设置 CMPP 协议版本。(4)支持多个客户端登录,支持长连接和短连接类型,支持标准CMPP 和华为、亚信接口。(5)服务端自动生成信息标识。(6)全中文解析及二进制格式包内容显示7。4.2 短消息收发系统结构4.2.1 短信增值业务网络平面结构全国短消息增值业务网络按平面可分为五层:(1)最上面是信息源的提供者;(2)第二层是因特网的短消息网关平面;(3)第三层是各地的短消息中心平面,由各地负责各种业务的短消息实体构成;(4)第四层是短消息的 S
21、S7 信令网关接入平面;(5)最后一层是 PLMN(Public Land Mobile NetWork)网8。网络平面结构如下图 4-1所示。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 19 页 -图4-1 全国短消息增值业务网络平面结构4.2.2 系统模块结构从上面我们可以看出短消息网关通过CMPP 协议把短消息接入因特网。下图4-2 给出本短消息收发系统的模块结构。图4-2短消息收发系统模块结构4.2.3 系统收发短消息流程短消息收发系统的消息主要分短消息上行、下行:1短消息上行名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 19 页 -手机发送短消息到
22、 SP 应用客户端。业务流程如图4-3所示。图4-3短消息上行2短消息下行SP 应用客户端发送短消息到手机。由于API接口与 ISMG 之间的通信过程是基于 Winsock通信,所以下面简要介绍Winsock编程模型。4.3 Winsock 网络编程模型简介4.3.1 Winsock 概述Winsock是一套开放的、支持多种协议的Windows 下的网络编程接口,是 Windows 网络编程事实上的标准。应用程序通过调用Winsock的API实现相互之间的通信,而Winsock利用下层的网络通信协议功能和操作系统调用实现实际的通信工作。4.3.2 Winsock 简单客户机/服务器模型进入20
23、世纪90年代后,随着计算机和网络技术的发展,很多数据处理系统都采用开放系统结构的客户机/服务器(Client/Server)网络模型,即客户机向服务器提出请求,服务器对请求做相应的处理并执行被请求的任务,然后将结果返回客户机。这种方式隐含了在建立客户机/服务器通信时的非对称性。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供(或被接收),这一套惯例包含了一套协议,它必须在通信的两头都被实现。根据不同的实际情况,协议可能是对称的或是非对称。在对称的协议中,每一方都有可能扮演主从角色;在非对称协议中,一方被不可改变的认为是主机,而另一方则是从机。一个对称协议的例子
24、是Internet中用于终端仿真的 Telnet,而非对称协议的例子是 Internet中的HTTP。无论具体的协议是对称的或是非对称的,当服务被提供时必然存在客户进程和服务进程。4.3.3 Winsock I/0模型本节主要讨论 2种I/O 模型的特点和用法:(1)Select模型Select(选择)模型是 Winsock中最常用的 I/O 模型。通过调用 Select 函数可以确定一个或多个套接字的状态,判断套接字上是否存在数据,或者能否向一个套接字写入数据。在套接字处名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 19 页 -于阻塞模式下的时候,它能够防止一次I/O 操作
25、后应用程序被阻塞,同时在套接字处于非阻塞模式下的时候,它能够防止出现WSAEWOULDBLOCK错误。Select 函数的原型是:int select(int nfds,fd_set*readfds,fd_set*writefds,fd_set*exceptfds,const struct timeval*timeout);其中,readfds,writefds和exceptfds 三个fd_set 数据类型的参数分别指向等待可读性检查的套接字组、等待可写性检查的套接字组和指向等待错误检查的套接字组的指针,在这三个fd_set 参数中,至少有一个不为 NULL,在任何不为空的集合中,必须包含至
26、少一个套接字句柄,否则,Select()函数就没有任何东西可以等待了。Select()函数调用成功返回时,fd_set 结构中将存有满足一定条件的套接字组的子集,并且Select)返回满足条件的套接字的数目,若调用失败,则返回 SOCKET_ERROR。(2)WSAAsync Select 模型WSAAsync Select 模型也是一个常用的异步I/0 模型,利用这个模型,应用程序可以在一个套接字上接收以Window:消息 为基础的网 络事件的通 知。该模 型的实现方 法是通过调用WSAAsyncSelect 函数自动将套接字设置为非阻塞模式,并向Winsock DLL注册一个或多个感兴趣的
27、网络事件,并提供一个通知时使用的句柄,当注册的网络事件发生时,对应的窗口将收到一个基于消息的通知 WSAAsync Select函数的原型为:int WSAAsyncSelect(SOCKET s,HWVD hWnd,unsigned int wMsg,Long lEvent):其中,字段 S用于标识一个需要事件通知的套接字的描述符,hwnd 标识一个在网络事件发生时需要接收消息、的窗口句柄,wMsg 在网络事件发生时指定窗口要接收的消息,它为一个自声明的消息。最后一个参数为 lEvent,为屏蔽码,用于指明应用程序感兴趣的网络事件的集合9。名师资料总结-精品资料欢迎下载-名师精心整理-第 1
28、2 页,共 19 页 -5 CMPP 协议API接口程序的设计与实现5.1 接口程序流程接口程序流程图如图 5-1所示:图5-1 接口程序的流程图5.1.1 Socket连接首先,建立 TCP 连接。一般情况下,由短消息应用系统连接到SMSC/ISMG的指定端口。5.1.2 登录网关服务器之后,登录到网关服务器,进行身份认证和注册。5.1.3 发送线程处理在成功登录网关服务器之后,就可以通过网关向移动终端提交短信CMPP_SUBMIT。当检测到有提交短信事件发生,判断N个发送线程有无空闲窗口资源,只要其中一个线程符合条件,系统将数据复制到该线程的发送窗口,并发送出去,然后等待网关的回应。另外,
29、如果提交到发送线程滑动窗口的数据是新提交的,则立即将数据发送出去;如果数据发送失败但发送次数不超过3次且没有超时(60秒),则重新发送数据。5.1.4 接收线程处理接收线程循环主要处理上行消息。等待所有网关连接的数据,数据到,根据相应条件写入接收队列。上行消息主要有:Deliver 消息、Submit_ Resp消息、Connect_ Resp消息和 Query_ Resp消息、Cancel_ Resp消息、Active_ Resp 消息。主要是对 Submit_ Resp消息和 Deliver 消名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 19 页 -息的处理。接收线程采
30、用简单的 Select 套接字模型。通过调用 Select 函数确定套接字的状态,判断套接字上是否存在数据可读。判断可读数据的消息类型,然后做相应的处理。接受线程处理流程图如下图5-2所示:图5-2 接收线程处理流程5.1.5 链路检测线程处理短消息应用系统对于网关来说是客户端,需要主动发起建立连接的请求。在CMPP 中请求和应答是 CMPP_ACTIVE TEST 和CMPP_ACTIVE_TEST_RESP,当TCP 连接上没有数据发送和接收并保持一段时间后,有的 ISMG 会自动关闭 TCP 连接。因此,一般情况下每间隔一段时间需要进行一次保持连接的操作。为此,在接口程序中,通过创建一个
31、链路检测线程,在链路检测线程中每隔30s向短消息网关空闲连接中发送一次链路检测包。以保持连接链路不断开。当连接意外断开时,及时向短消息网关发送 CMPP_CONNECT请求包,及时重新建立连接10。5.2 接口程序的结构接口程序主要由一个 CCMPP Client 类构成,在该类中实现同短信网关的通信细节,封装成DLL 形式提供给短消息应用系统。接口程序按功能可分为三层:Socket_I0 层、CMPP_PDU层和API层。5.2.1 Socket_I0层最底层是 Socket_IO层,主要功能是建立 TCP 连接、完成数据包的发送和接收。Socket_I0层与上层协议无关,只是完成具体的网络
32、通信。Socket_IO 层中为 socket 分配有发送缓冲区和接收缓冲区。上一层将要发送的数据包写入发送缓冲区中的空闲区域,每一次调用套接字发送函数send时都试图将发送缓冲区中所有未发送的数据发送出去。对于数据的接收,调用recv名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 19 页 -时将接收到的数据写入接收缓冲区,由上一层从接收缓冲区中取出己经接收到的完整的数据包。5.2.2 CMPP_PDU 层接口程序中间层是 CMPP PDU 层,一方面负责完成 CMPP 协议中的数据包(PDU)的生成和解析。另一方面负责完成 CMPP 的请求/应答机制。每一种需要发送的 CM
33、PP 数据包都对应一个生成函数,接收线程接收数据时首先判断包格式是否正确,正确再从接收缓冲区中取出数据包,每个数据包也对应一个解析函数。生成函数按照 CMPP 协议中规定的格式填写各种参数,在发送缓冲区中直接生成数据包。解析函数从接收缓冲区中取出数据包的各个字段。5.2.3 API 层最上层是 API层,提供应用程序的接口函数。为了使应用程序能够同时支持多个CMPP 连接,在API层中,每一个连接都对应一个私有的数据结构。其中包含了连接使用的socket 发送和接收缓冲区、连接属性等。应用程序初始化连接时需要设置连接属性,包括协议韵种类CMPP、协议的版本、ISMG 的IP地址、端口号等。此外
34、,对外提供的 API层主要包括登录连接、设置短消息发送包、提交短消息、退出登录、查询、取消短消息等操作。5.3 接口类的实现本接口程序以动态库的形式提供了Windows 下的接口,导出协议封装类CCMPP Client,提供其成员函数和成员变量供客户端应用系统调用。CMPP 协议API接口是SP 客户端应用系统接入短消息网关的通信桥梁。5.3.1 接口类的成员函数只列出主要接口函数,对于客户端应用系统来说,调用这些接口函数就能完成通过网关和移动终端的短信收发功能。下图5-3给出客户端应用系统调用 API接口程序启动过程的流程名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 19
35、页 -图5-3客户端调用 API接口程序启动过程功能概述在客户端提交 Submit消息前设置发送消息包,按照CMPP_SUBMIT消息格式配置各参数,包括业务类型、计费用户类型字段、信息格式、信息内容来源、资费类别、资费代码、源号码、接收短信的目的号码、短消息内容和短消息内容的长度。函数原型void CCmppClient:Set_Submit SMS(CMPP_SUBMIT*pSubmit,int*pkg_len,char*sServiceId,int nFeeUserType,int nMsgFmt,char*sSPId,char*sFeeType,char*sFeeCode,char*s
36、SrcNumber,char*sDestNumber,char*sMsgContent,int nMsgLen)(1)CCmpp Client:SubmitSMS 功能概述将设置好的 submit 消息包发往短信网关。函数原型int CCmpp Client:SubmitSMS(CMPP_SUBMIT*pSubmit,int nLen)当短信网关提交 CMPP_SUBMIT数据到短信中心,短信中心返回 CMPP_Submit _Resp 其中包含为这条短消息分配的 Message_ID。如果Submit中要求返回状态报告,那么当短消息提交给目的号码后或者由于超时等原因被废弃后,短信中心会返回一
37、个状态报告。(2)CCmppClient:CThread Pool:AddWndData 功能概述将Submit数据提交到发送窗口。函数原型名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 19 页 -void CCmppClient:CThreadPool:AddWndData(CMPP_SUBMIT*pSubmit,int nLen)在CCmppClient类中定义一个滑动窗口数组:WND_DATA Data Windowm_nThreadPools*m_nWndSize;其中m_nThreadPools为客户端初始配置发送线程类CThreadPool实例的个数,m_nWnd
38、Size为窗口大小 16,m_nThreadPools*m_nWndSize 即为每开一个发送线程都分配有大小为16的滑动窗口。每一个有空闲窗口资源的线程在接收短信网关的应答前可以将16个窗口全部填满即一次发送16条消息。(3)CCmppClient:CTbreadPool:ReleaseWndData 功能概述对于发送成功的 Submit信息,要把其所占据的数据窗口释放掉,即可用窗口资源加1,返回成功发送的消息体函数原型CMPP_SUBMIT*CCmppClient:CThreadPool:ReleaseWndData(int nSeqId)(4)CCmppCllent:OnRecv()功能
39、概述上行MO 消息主要是 CMPP_SUBMIT_RESP消息和 CMPP_DELIVER消息。对于CMPP_SUBMIT_RESP消息,根据返回的消息流水号判断其是否为非法序列号,如果是在有效范围内,则判断发送线程池的线程索引。找到发送相同消息流水号的CMPP_SUBMIT消息的发送线程,然后调用 ReleaseWndData 函数,删除对应流水号的消息包,并释放窗口资源。对于CMPP_DELIVER消息,在 CCmppClient类中定义接收缓冲队列 CMPP_DELIVER RecvData。当CMPP_DELIVER数据到来时,写入队列内。在客户端循环检测接收缓冲区,如果有新数据到来,
40、读取数据11。5.3.2 线程的同步在发送、接收线程都会涉及到一些全局资源需要同步:(1)HANDLE m_phSemaphoreWndm_nThreadPools;信号量数组;用来同步每个发送线程的数据窗体。其中m_nThreadPools为客户端初始配置发送线程类CThreadPool实例的个数。(2)CRITICAL_SECTION m_csWnd:用来同步发送数据。(3)CRITICAL_SECTION m_csSeqId:用来同步消息流水号。(4)CRITICAL SECTION m_csSocket 用来同步发送时套接字。(5)int m_nWritePointer:int m_n
41、ReadPointer:用来同步接收对列的数据。名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 19 页 -6 结论本论文设计与实现了一个基于中国移动点对点协议(CMPP2 0)的短信网关动态链接库,提供WINDOWS下统一的编程接口。通过本接口,还开发了 SP 应用程序作为客户端连接CMPP 网关,进行短信收发。自己开发实现 CMPP 短信网关接口的好处在于可以用一套平台,只需稍加修改甚至不用修改就可以应用到不同的网关。这些短消息应用通过调用统一短消息平台提供的接口包,就可以完成自己的短消息业务。本论文中对基于动态链接库的API接口设计做了详细的阐述,并就各种CMPP 消息进
42、行了与短消息网关服务器之间的通信测试。双方能正常且稳定地收发短信,验证了接口程序的正确性。运营商提供移动网络接入Internet的短消息网关,短消息平台是服务提供商(SP)为自己短消息增值业务系统接入短消息网关的提供一个统一管理、配置、计费的平台,使全国各地的手机用户可以通过手机短消息服务中心(SMC)非常自由地发送和接收短消息。名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 19 页 -参考文献1 聂明短信网关在短信信息服务中的作用J 电信工程技术与标准化.2002,(4):8993.2 王晓真,金心宇移动短消息业务的发展与技术演进J 现代电信科技.2003,(2):1519
43、3 张云,熊承燕,张宗橙基于GSM 的短消息业务协议分析J 无线电工程.2001,(4):2426,35 4 王晖,廖建新,周俊峰等无线智能网短消息业务的关键技术分析J 高技术通讯.2003,(3):8135 许琨移动网络中的短消息系统及应用J 天津通信技术.2001,(4):56586 王晓年,潘永湘,张迎春等基于CMPP 协议短消息收发的实现J 计算机应用研究.2002,(9).7Jinqi卓越短信平台网关模拟器http:/sim.B 8 程卫东短信增值业务平台实施方案J 电信科学.2000,(5):11-149 郎锐,罗发根 Visual C+网络通信程序开发指南M 北京:机械工业出版社.2004 10 中国移动通信互联网短信网关接口协议(V2O)P 中国移动通信集团公司.2002 11刘惊雷.Visual C+实用教程 M.北京:电子工业出版社.2005.名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 19 页 -