
国开电大作业范文-增值短消息服务平台的设计与实现.doc
5页摘 要 本文首先介绍了短消息业务和平台的概念,参考中国移动的CMPP协议和有关规范, 给出了一个短消息增值服务平台的设计实现方案和实现方法对整个平台的通信机制,业务处理,后台管理,数据库设计等关键问题,进行了重点论述 关键词 CMPP协议;短消息;短消息网关;SP 0 引言 随着中国一跃成为世界上最大的移动通信市场,短信以它通信费用低廉,双向传输,通信质量可靠,速度快等显著优点受到了越来越多人的青睐,短信已被称为“第四媒体”除了大量使用的用户之间的点对点短信业务之外,从信息平台到用户的短信信息服务业务也在快速发展,该业务已经成为广大用户及时方便地获取信息的一种手段1 有关短消息,短消息业务及短消息服务平台 SMS(Short Messaging Service),是最早的,但仍是现在火爆全球的文本短消息服务;EMS(Enhanced Message Service)增强信息服务,是(SMS)的新版本,支持发送简单的图像、声音和动画等信息;MMS(Multimedia Messaging Service)多媒体短信服务,是目前短信技术开发最高标准的一种,支持多媒体功能,需要2.5G或3G的网络来支持它的运转。
本增值短消息服务平台的软件设计使用Visual C++作为前台开发工具,SQL Server 2000作为后台数据库,是一个是以为应用基础、以前台页面为操作界面,具有丰富增值服务内容的完整的、大规模短信息处理的系统通过这个平台可以向中国移动、中国联通和小灵通等用户提供发送短信息、定制、点播/订阅、答题,积分福彩,投票 / 竞猜等短信服务,具体应用如电视、电台媒体开展互动业务;报纸、杂志媒体提供新闻服务;气象台、彩票中心、交警提供资讯、商场开展客户调查及促销活动服务等为简单起见,本文只讨论其中基于中国移动短信网关(移动用户)的系统开发与实现2 CMPP协议的介绍 CMPP(China Mobile Peer to Peer)协议,全称是中国移动通信互联网短信接口协议,其规定了以下三个方面的内容:(1)业务提供者(SP)与互联网短信网关(ISMG)之间的接口协议;(2)互联网短信网关之间的接口协议;(3)互联网短信网关和汇接网关(GNS)之间的接口协议 图1 互联网短信网关组网结构 CMPP协议主要提供以下两类业务操作:(1)短信发送(Short Message Mobile Originate)MO 操作:用户为起始端;(2)短信接收(Short Message Mobile Terminated)MT操作:用户终止端;CMPP协议和HTTP,FTP,SMTP等协议一样,处于TCP/IP网络模型的应用层,它以TCP/IP协议作为底层通信承载。
SP与ISMG之间进行信息交互式可以采用长连接或短连接两种方式本短消息服务平台所采用的连接方式为长连接,即: SP与ISMG以C/S方式建立连接时,在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发送链路检测包以维持连接3 系统的结构和功能模块图3.1 系统的层次结构 本短消息服务平台,在典型的网络条件下,具有稳定可靠、处理能力高、组网能力强、系统管理方便、使用灵活等特点,能够满足功能性、稳定性、效率性的要求,同时,该系统拥有强大的后台管理功能和业务处理能力,从而为业务的可持续发展以及用户快速准确获取信息,创造了条件 整个平台的组成分为四个层次:硬件、网络、通信层:包括支持系统运行的所有服务器、客户机及网络设备、通信链路以及存储设备、输入输出设备等硬件;操作系统层(系统软件层):基于硬件平台之上,提供基本的系统调用及网络通信功能(如Windows2000等);应用开发层:在操作系统之上的应用开发环境,包括软件开发工具数据库等(如Visual C++、SQL server 2000等);应用软件层(最外层):面向业务应用,使业务信息化和自动化,用户通过它进行业务上需要的信息处理、信息存储和信息传送等工作,是与操作人员直接相连的部分。
3.2 系统结构示意图介绍 系统主要由通信模块,业务处理模块,后台管理模块和数据库部分组成,其软件结构示意图如图2所示: 图2 系统软件结构示意图 系统支持CMPP3.0(中国移动)协议、SGIP(中国联通)、SMGP(中国电信、中国网通)、SMPP协议(国际标准)包括MO(包括用户上行消息和状态报告)接收及MT下行的处理,通信程序的编写完全按照协议进行开发4 短消息服务平台通信模块的设计 通信模块是短消息服务平台的主要模块,它是SP(业务提供者)和各基础网络运营商网关之间的一条高质量的传输通道,负责接收和响应用户请求该模块主要是通过多线程机制来处理由SP发送到短消息网关的消息和接收由短消息网关发送的消息通信模块涉及到以下几个重要线程:消息发送线程,消息接收线程,业务处理线程(包括MO业务处理线程和MT业务处理线程),链路维持线程以及监控线程,其中监控线程作为主线程,是由MFC程序自动创建的主线程,用于创建和监控上述几个辅助线程通信双方以C/S方式(SP作为客户端,ISMG作为服务器端)建立TCP连接,由函数SP_Connect_ISMG (char IsmgIp [16],unsigned short IsmgPort)实现,该函数封装了TCP/IP的Socket连接建立的过程,其中参数IsmgIp和工IsmgPort分别为短消息网关的IP地址和端口号(CMPP3.0协议规定SP和网关之间的建立长连接时所用的端口号为7890),然后需要建立CMPP连接以实现SP和ISMG之间的短消息通信,该操作的目的是SP向ISMG注册成为一个合法SP的身份,由函数CMPP_Connect()来实现。
至此,双方建立了基于TCP/IP的CMPP应用层连接 该模块用两个缓冲队列来放置消息,它们分别是用来存放由网关发送的消息接收队列;存放SP发送到网关的消息发送队列为了让多个线程可以互斥地从收发缓冲队列中存取数据包,必须遵循:当缓冲队列已满时,不能继续接收短信,所有消息接收线程(针对接收缓冲队列)或者MT业务处理线程(针对发送缓冲队列)必须等待;当缓冲队列为空时,不能继续取出短信,所有MO业务处理线程(针对接受缓冲 ISMG Receive thread Send thread Buffer queue queue queue Buffer queue queue queue Process thread TT queue queue Process thread queue queue Database 队列)或者消息发送线程(针对发送缓冲队列)必须等待。
本通信模块通过使用临界区和信号量技术处理了多线程之间的同步问题 图3 通信模块工作流程图 短消息队列及其指针定义如下:typedef struct cmpp_head { unsigned long TotalLength; unsigned long CommandId; unsigned long SequenceId; } CMPP_HEAD; typedef struct cmpp_packet { CMPP_HEAD Pk_head; Char Data[CMPP_PKG_SIZE]; unsigned long Seqid; CTime Time; BOOL Sourse; } CMPP_PACKAGE; CMPP_PACKAGE m_SmSend[MAX_SM_SEND]// 发送短消息队列CMPP_PACKAGE m_SmRecv[MAX_SM_RECV] //接收短消息队列 int m_nSendIn //发送队列的输入指针int m_nSendOut //发送队列的输出指针int m_nRecvIn //接收队列的输入指针int m_nRecvOut //接收队列的输出指针其中将短消息存入短消息队列由函数PutRecvMessage()实现:void PutRecvMessage(CMPP_PACKAGE * pparam, int nCount){ …………………………..for (int i=0; i < nCount; i++) { …………………………..memcpy(&m_SmRecv[m_nRecvIn], pparam, sizeof(CMPP_PACKAGE)); m_nRecvIn++; if (m_nRecvIn >=MAX_SM_RECV) m_nRecvIn=0;pparam++;…………………………..}…………………………..}从接收短消息队列中取出一条短信由函数GetRecvMessage()实现:BOOL GetRecvMessage(CMPP_PACKAGE * pparam){ …………………………..EnterCriticalSection(&m_csRecv);if (m_nRecvOut !=m_nRecvIn) {…………………………..memcpy(pparam, &m_SmRecv[m_nRecvOut], sizeof(CMPP_PACKAGE));m_nRecvOut++;if (m_nRecvOut >=MAX_SM_RECV) m_nRecvOut=0;………………………….. }LeaveCriticalSection(&m_csRecv);…………………………..}5 系统业务处理模块的。












