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协议以及多款手机上经过测试验证。
分享到:
相关推荐
在这个名为"电信网关API_JAVA(含超长短信拆分).rar"的压缩包中,包含了一套基于JAVA语言实现的电信网关API以及相关的使用说明文档,特别是对于超长短信的拆分功能进行了特别处理。 1. **短信网关API**:短信网关API...
而“单片机通过短信猫发送短信的方法.pdf”很可能是详细的步骤指南或者案例分析,建议结合这两个资源进行深入学习。 总的来说,单片机通过短信猫收发短信涉及到硬件连接、AT指令控制、串口通信以及C语言编程。理解...
本文将深入探讨手机接收的PDU串的分析,包括7-bit编码和UCS2解码以及超长短信的处理。 首先,我们来看7-bit编码。在短信中,由于早期GSM系统对每个字符的限制,短信通常使用7-bit的GSM 7-bit Default Alphabet编码...
本文将重点探讨AT指令在接收超长短信时的PDU(Protocol Data Unit)格式分析,这对于实现长短信的有效接收与合并至关重要。 #### 二、基础知识回顾 在深入了解AT指令接收超长短信的具体细节之前,我们首先简要回顾...
2. AT指令的详细文档,列出常见的AT指令及其使用方法,以及可能的错误处理策略。 3. 超长短信的实现代码,可能包括分段函数和接收端的重组逻辑。 4. 相关的API文档,解释如何在应用程序中集成短信猫的功能。 5. 可能...
1. **丰富的基本功能:**支持批量短信群发、超长短信发送等功能。 2. **强大的稳定性与可靠性:**作为电信级标准产品,确保系统的稳定运行。 3. **业务生成器:**提供零编程的业务生成工具,用户可根据需要快速生成...
ArrayList<String> parts = smsManager.divideMessage("超长短信内容"); PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, new Intent(ACTION_SMS_SENT), 0); PendingIntent deliveryPI = ...
在发送短信过程中可能会遇到网络问题、认证失败、短信内容超长等错误,需要进行适当的异常处理,并返回错误信息。 11. **sjp.jar** 这个文件可能是一个已经封装好的Java短信SDK,包含了对短信接口的调用。使用时...
- 如果需要发送多部分消息(如包含特殊字符或超长文本),则需使用`sendMultipartTextMessage()`方法。 在Java标准版中,发送短信通常涉及以下步骤: 1. 选择合适的短信网关服务提供商,这些服务通常提供HTTP或...
值得注意的是,实际使用中还需要考虑错误处理和异常捕获,因为短信发送可能会遇到各种问题,如网络中断、网关繁忙或短信内容超长等。此外,考虑到不同短信服务提供商的API和费用结构,可能还需要对代码进行调整以...
运行稳定。经过五年在线运行,目前在全国有超过100家SP采用CMPP2API接口库。 效率高,资源占用率低。...支持自动重连,活动检测,超长短信的功能。参数定制性强,可以同时连接多个网关进行消息收发。
4. **错误处理**:发送短信可能会遇到各种问题,如网络故障、短信内容超长、手机号码格式错误等。因此,我们需要对HTTP响应进行检查,根据返回的状态码和错误信息进行相应的异常处理。 5. **异步编程**:在.NET中,...
模板同样需要审核,长度限制在70字以内,超长会被拆分为多条短信。 - **安装SDK**: 使用`pip3 install qcloudsms_py`安装腾讯云短信的Python SDK。 - **发送脚本**:创建`SmsSingleSender`对象,传入`appid`和`...
总结来说,长短信拆分技术是一种用于处理超长短信的方法,它遵循CMPP协议,通过在每个子消息中添加特定头部信息,确保接收端可以正确拼接和理解这些短消息,从而恢复出原始的长文本内容。这项技术在现代移动通信中起...
具体用例包括检查新消息是否正确生成为MMS或SMS,输入法是否正常,字符限制是否符合要求,空短信的发送,存储位置的切换,超长短信(EMS)的处理,群发短信等。 - **交互测试用例**:测试不同功能之间的交互。比如...
15、为了防御网络监听,最常用的方法是 ()[单选题] * A、采用物理传输(非网络) B、信息加密(正确答案) C、无线网 D、使用专线传输 16. 16、向有限的空间输入超长的字符串是哪一种攻击手段?()[单选题] * A、缓冲...
然而,使用过程中可能会遇到各种故障,以下是一些常见的问题及其解决办法: 1. **接收不良**:当GPS定位器在高楼附近或地下室使用时,由于无线电波受到阻挡,可能导致接收不良。解决方案是将设备移至开阔、信号良好...