我是靠谱客的博主 故意发箍,最近开发中收集的这篇文章主要介绍联通增值业务短信通信程序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       该程序主要是第三方短信服务商与联通网关的通信程序,其短信收发包主要应用了IO开源框架netty,该程序主要将短信内容组装成联通通信协议中规定的格式,然后发送给联通网关,然后在通过联通发送给用户以提供短信业务。先分析收发通信模块

一,基本流程

  1.发送客户端首先会链接并发送登录协议包登录联通网关

   

       client.connectAndLogin(); 方法主要工作便是链接并登录,链接和登录会反复尝试,直到链接成功并登录

       

       

          链接方法

      

             登录方法,发送登录包CMPP30Connect登录

             

            提交包 submitPacket 将包体中的byte 流写入session

 

   二.组包过程

            每类消息实体都继承于一个抽象消息类,这个消息类中主要的两个方法分别是write,read

             

  •  write 在发送出去的消息中,将实体中的成员属性有字符串根据协议组装为byte流,发送类消息包含

                   CMPP30Connect ,CMPP30Deliver,CMPP30Submit

  •    read 在返回的消息中,将接收的byte流解析为消息实体中对应的成员属性,返回消息包含 CMPP30ConnectResp,

                  CMPP30DeliverResp,CMPP30SubmitResp

         消息类结构运用了典型的模板模式,抽象类write,read 定义组包,解析包的固有流程,如下抽象类中的read,write方法

      

       

         其中对包头的处理writeHeader,readHeader,每类消息都是一样的,可以在抽象类中实现,writeHeader,readHeader的实现,

         而writeBody,readBody则在个具体消息子类中根据每类消息的组包协议不同来具体实现

       

   

  在消息子类CMPP30Connect ,CMPP30DeliverResp中writeBody, readBody的实现

   

 

    

  组包的详细细节

     以CMPP30Submit消息体为例详细讲解下组包的详细细节

    

    定义消息体中每个成员属性在消息包中所在空间大小,即所占的字节长度,这是协议中规定死的,

    消息体中的成员属性

   消息体中组包方法的细节说明 writeBody

 

    在这个消息体中 msg_id 没有为空,所以他所占用的空间用0来填充。

 

这几个成员属性是int类型,直接转换为byte填充进buffer缓存区中。

 

 字符串类型的可通过getBytes方法来转换

   

  

 

 

         

----
spring mvc+tomcat源码分析视频(链接复制在浏览器打开)

https://study.163.com/course/courseMain.htm?share=2&shareId=480000001919582&courseId=1209399899&_trace_c_p_k2_=6d81bc445e9c462ab8d6345e40f6b0bf

         

            

最后

以上就是故意发箍为你收集整理的联通增值业务短信通信程序的全部内容,希望文章能够帮你解决联通增值业务短信通信程序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部