基于SMPP协议的GSM短消息增值业务接口设计与实现.doc_第1页
基于SMPP协议的GSM短消息增值业务接口设计与实现.doc_第2页
基于SMPP协议的GSM短消息增值业务接口设计与实现.doc_第3页
基于SMPP协议的GSM短消息增值业务接口设计与实现.doc_第4页
基于SMPP协议的GSM短消息增值业务接口设计与实现.doc_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

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

文档简介

基于smpp协议的gsm短消息增值业务接口设计与实现design and implementation of one of the gsm short message value-added service interface based on protocol smpp摘要:本文首先介绍了gsm短消息点对点协议smpp的定义、接口连接和消息处理机制;在分析gsm短消息增值业务接口的基础上详细论述了基于smpp协议的一种gsm短消息增值业务接口通信服务程序的实现。关键词: 短信增值业务; smpp协议; 通信服务接口; unix网络编程abstract: this paper introduce the concept and structure of gsm short message value-added service and the short message point-to-point protocol smpp. then gives a method of design and implementation of the gsm short message value-added service interface based on protocol smpp in details. some important technology items are also shows.keywords: short message value-added service; smpp protocol; communication interface; unix network programming 1、 前言短消息业务是gsm/dcs1800系统中唯一不需要建立端到端业务通道的业务,它通过gsm系统的信令信道(sdcch用户正常时或sacch用户忙时)来传送短消息,通过smsc完成接收、存储和转发用户的短消息,如何充分利用smsc的有效资源开展方便灵活的增值业务,实现信息的互连和共享,即为短消息业务提供更多的信息源。目前smsc均提供与外界的接口方式。最广泛应用的协议有smpp(short message peer to peer)(含中国移动点对点协议cmpp)/cimd (computer interface message distribution) 等。通过smpp通信服务接口,可以向用户提供许多应用,为开展新业务提供了广阔的前景。2、 smpp协议格式及消息交互定义21 smpp pdu定义smpp协议是一个开放的消息转换协议;它定义了一系列操作的协议数据单元(pdus)和当smpp运行时esms应用系统与smsc之间交换的数据。从而完成smsc与esmes(外部短消息实体)的信息交换。smpp是基于smsc与esme之间的请求和响应协议数据单元的交换,每一个smpp操作都由一个请求pdu和相应的一个响应pdu组成并且这种交换是在tcp/ip或x25网络连接之上的。因此基于smpp短消息增值业务接口利用socket网络编程实现。根据smpp协议,每个pdu的结构定义由pdu header和pdu body(有些pdu没有)组成,见下表:pdu header(mandatory)pdu body(optional)整个pdu的长度pdu的类型pdu的状态pdu的序列号必要参数可选参数command lengthcommand idcommand statussequence numbermandatory parametersoptional parametersunsigned longunsigned longunsigned longunsigned longmixedtlv其中协议定义了非常复杂的可选参数,每个可选参数的结构定义如下:可选参数标签参数值的字节长度参数的取值taglengthvalueunsigned intunsigned int变长其定义是为扩充应用功能,但在常见的短消息增值业务应用中,只需使用pdu的必选参数即可,但如要实现,也只是在pdu定义结构中添加可选项,对系统的实现无影响。22 短消息增值业务交互数据格式定义各种业务源服务短消息增值业务接口的作用是为建立esme与smsc及业务应用源的连接。其结构示意图如下:smsc通信接口基础信息数据库其功能(1)将来自smsc的协议数据进行smpp解码,得到的信息写入数据库或发给各业务服务中心;(2)将来自各业务服务中心的消息进行smpp编码,通过通信模块提供的连接发往smsc,并将必要的信息写入数据库。其中smsc与通信接口之间是通过smpp协议pdus交互的,而通信接口与各种业务源之间的消息交互还必须确定数据帧的含义,保证消息交互的 正确性,同时因许多信息在smpp编码、解码时进行了分解取舍,所以对于前端业务中心数据通信需要定义数据帧格式,如下表:frame header (mandatory)frame body(optional)整个帧长度帧类型id 帧状态帧序号必要参数command lengthcommand idcommand statussequence numbermandatory parameters4字节2字节 2字节4字节mixed3、 通信接口服务系统的实现31 系统完成功能需求(1) 与smsc连接和绑定(2) 与各应用业务中心的连接(3) 接收smsc短消息、解码并进行短消息应答编码(4) 对接收短消息合法检查、识别所属应用业务并组成相应的内部数据帧(5) 发送内部数据帧到所属应用业务中心(6) 接收各应用业务中心发送的内部数据帧并应答(7) 对接受的数据帧解析并进行smpp编码并发送至smsc(8) 对发送和接收的短消息计费统计32 系统设计与实现 由上述系统的主要功能看出系统实际上是相对独立两个处理流程,一个是处理与smsc的编码、解码和数据的收、发;另一个是与前端应用业务中心的数据帧编码、解码和数据收发。并且消息的到达具有随机、快速和突发性,因此将系统设计为两个主进程。分别处理smsc消息和应用业务中心消息。两个进程之间采用消息队列进行消息通信,因为在短消息增值业务中所有消息都可以认为是一条单独的消息,没有逻辑关系也不存在实时共享关系。为保证系统的安全与正确,对短消息的发送采用定时进程控制;为适应系统的可扩充性,对数据库的操作、访问采用数据库访问进程单独进行处理。系统结构图如下:smsc初始化模块serv初始化模块smsc-serv消息队列smsc进程serv进程smsc应用服务serv-smsc消息队列 编解码函数库定时器-smsc消息队列smsc-定时器消息队列数据库 定时器进程 321 smsc进程处理功能流程 首先与smsc进行socket连接并侦听tcp端口,对smsc发绑定消息,接收smsc发送的短消息进行解码并检查其合法性,对合法正确分类的消息组成前台业务应用定义的内部数据帧(格式前面已定义),将已组好的内部数据帧发送到smsc-serv消息队列;然后取serv-smsc消息队列消息存包并启动定时器,发送pdu到smsc。其内部结构如下图: smsc进程socket_smscsmscsmscpdu接收&处理模块smsc-serv消息队列packet数组绑定模块serv-smsc消息队列处理及发包模块存包模块serv-smsc消息队列启动定时器模块关闭定时器模块定时器-smsc消息队列处理模块packet结构数组的作用是存储即将发送或已经发送的pdu包,其定义如下:typedef struct unsigned int seqnum;int ordernum;char datamax; pend_packet;每个pend_packet结构对应一个pdu包,其中seqnum是与该pdu包结构中的header中的sequence_number一致的;ordernum是该pdu包存入packet数组的序列号,即全局变量ordernum,在每次调用存包模块时,ordernum会自动递增,则所存的pdu包的ordernum即为此ordernum。但在接收到该pdu包的回应以后,则将该pdu包在packet数组中的ordernum置为-1,表示将其清除。因为每个smsc对应的socket有5个状态,在调用发包模块时,只有当对应socket的状态为data_status时,才能直接将pdu包发送至对应smsc,否则要调用绑定模块对该smsc重新进行绑定。在这两种情况下,都要将pdu包存入packet数组。在接收到绑定数据包的响应包后,则将绑定数据包在packet数组中的状态置为-1,将该socket在socket_smsc表中状态置为data_status,同时将packet数组中属于该socket的pdu包发至serv-smsc消息队列,serv-smsc消息队列处理模块会调用发包模块将这些包发送至相应smsc。在收到数据包的响应包后,则将该数据包在packet数组中的状态置为-1。322 serv进程处理功能流程 serv进程则相对较简单,完成对serv的数据接收、编码并发送到serv-smsc消息队列;取smsc-serv消息队列中消息发送到前台业务服务中心。实现结构图略。323 定时器进程及数据库的访问在通信软件系统中,需要利用定时器来管理任务的调度和通信、通信协议的超时(提供差错控制的机制)和系统数据的定时更新等多种事务。在那些对时钟数量和种类要求不多,精度要求不高的应用场合,可以直接使用操作系统提供的时钟功能。然而,实际的通信软件要求时钟种类多,并发的时钟数量庞大。有的对精度要求极为严格,在这种情况下可以考虑采用实时操作系统。linux中spec1170提供了三种间隔计时器,其中一种是itimer_real 类型,它的机制是:当该类型的间隔计时器到期时,系统内核会发出sigalarm信号,可以通过捕获这一信号来感知间隔计时器的到期。根据这一原理,设计了基于linux操作系统的spec1170软件间隔计时器的多任务定时服务器,来对实时通信系统提供支持。通信接口系统对oracle 8i数据库的访问采用单独进程实现,oracle提供proc预编译器,proc可将.pc文件预编译成.c文件,然后在linux/unix中用cc或gcc链接oracle数据库下的头文件和库文件,编译链接成可执行文件。4、 结束语设计的短消息增值接口通信系统采用结构化模块向客户提供服务。在性能上采用开辟多个线程和合理协调多个进程间的优先级及进程内部各任务优先级,并为降低系统空闲时对cpu的占有率,将系统的非阻塞方式改为阻塞(消息触发)方式。系统在sun solaris系统下运行,我们将其用在gps车辆定位软件系统中,实践证明,它达到了预期设计目标,

温馨提示

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

评论

0/150

提交评论