zoukankan      html  css  js  c++  java
  • 超长短信的处理办法

    GSM 03.40规范(TP-06 1999-12-15 7.4.0)中规定了SME对于超长短信的合并处理。规范制定至今,已经超过6年,绝大多数正在使用的手机,都支持这一功能。

    CMPP协议中,CMPP_SUBMIT_MESSAGE中有两个字段pk_total和pk_numer,恰看起来,这就是发送超长短信的设置参数,其实不然,这两个参数的设置,应该是没有用处。

    发送超长短信,需要做两件事情:设置TP_udhi的值设置为1,在消息正文中增加协议头。协议后可以两种格式,分别是长度为6和长度为7的协议头。格式如下:
    6位协议头格式:05 00 03 XX MM NN
    byte 1 : 05, 表示剩余协议头的长度
    byte 2 : 00, 这个值在GSM 03.40规范9.2.3.24.1中规定,表示随后的这批超长短信的标识位长度为1(格式中的XX值)。
    byte 3 : 03, 这个值表示剩下短信标识的长度
    byte 4 : XX,这批短信的唯一标志,事实上,SME(手机或者SP)把消息合并完之后,就重新记录,所以这个标志是否唯一并不是很重要。
    byte 5 : MM, 这批短信的数量。如果一个超长短信总共5条,这里的值就是5。
    byte 6 : NN, 这批短信的数量。如果当前短信是这批短信中的第一条的值是1,第二条的值是2。
    例如:05 00 03 39 02 01

    7位的协议头格式:06 08 04 XX XX MM NN
    byte 1 : 06, 表示剩余协议头的长度
    byte 2 : 08, 这个值在GSM 03.40规范9.2.3.24.1中规定,表示随后的这批超长短信的标识位长度为2(格式中的XX值)。
    byte 3 : 04, 这个值表示剩下短信标识的长度
    byte 4-5 : XX XX,这批短信的唯一标志,事实上,SME(手机或者SP)把消息合并完之后,就重新记录,所以这个标志是否唯一并不是很重要。
    byte 6 : MM, 这批短信的数量。如果一个超长短信总共5条,这里的值就是5。
    byte 7 : NN, 这批短信的数量。如果当前短信是这批短信中的第一条的值是1,第二条的值是2。
    例如:06 08 04 00 39 02 01

    7位协议头和6位协议头的区别是,6位协议头短信的标识字段是1个byte,而7位协议头短信的标志字段为2个byte。大多手机采用6位的协议头,也就是05 00 03 XX MM NN。

    发送的短信这么处理,接受短信反过来就可以了。上述内容,在CMPP协议以及多款手机上经过测试验证。
  • 相关阅读:
    用递归实现因式分解
    linux文件 面试知识
    嵌入式软件面试小点
    带环链表的几个问题
    C++对象的内存布局以及虚函数表和虚基表
    手把手教你用 React Hooks 开发移动端网站,从入门到实践
    你闺女都能看懂的 Kubernetes 插画指南!
    使用卷积神经网络识别交通标志
    6 个前端开发必备工具,提高你的生产力
    给新手看的 Micronaut 入门教程,10 分钟写出一个Micronaut程序
  • 原文地址:https://www.cnblogs.com/jobs/p/445584.html
Copyright © 2011-2022 走看看