基于SMPP协议的GSM短消息增值业务接口设计与实现 |
| 作者:邹建新 黄本雄 来源:本站整理 发布时间:2005-7-13 10:47:53 |
|
表示将其清除。 因为每个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。 3.2.2 serv进程处理功能流程 serv进程则相对较简单,完成对serv的数据接收、编码并发送到serv->smsc消息队列;取smsc->serv消息队列中消息发送到前台业务服务中心。实现结构图略。 3.2.3 定时器进程及数据库的访问 在通信软件系统中,需要利用定时器来管理任务的调度和通信、通信协议的超时(提供差错控制的机制)和系统数据的定时更新等多种事务。在那些对时钟数量和种类要求不多,精度要求不高的应用场合,可以直接使用操作系统提供的时钟功能。然而,实际的通信软件要求时钟种类多,并发的时钟数量庞大。有的对精度要求极为严格,在这种情况下可以考虑采用实时操作系统。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]key a.robbins ,steven robbins,pratical unix programming,1999,8。 [2]smpp developers forum; short message peer to peer protocol specification v3.4;document version 1.2 ;1999.10 [3]邹建新;gsm短消息接口协议smpp的研究。武汉科技学院学报;2000.12(4):12~17 作者联系方式: 电话:027-87410171 电子邮件:frankzou_cn@263.net: |
| [] [返回上一页] [打 印] |
|
文章评论 |
