基于RxTx的短信发送-长短信pdu
程序员文章站
2024-01-13 16:53:22
...
众所周知,可能有些人未必知道,pdu发送短信是有字数限制的,信息体长度不超过140字节,如果采用uni编码一个字需要两个字节算的话正好70个字,这就是为什么以前的手机每条短信只能发送差不多70个字,那为什么现在就可以发送很长的短信呢?原因是现在设备都支持长短信(pdu分包)的协议,即像http包一样拆分发送到达以后组装成一个完整的请求返回。好了废话不多说了下面介绍拆分pdu的协议,知道了协议编写长短信发送的代码就是小case。
发送协议介绍
SCA(Service Center Address) | PDU-Type | MR(Message Reference) | DA(Dest Address) | PID | DCS(Data Config Schema) | VP(Validity Period) | UDL(User Data Length) | UD(User Data) |
1 byte | 1byte | 2byte | 8byte | 1byte | 1byte | 1byte | 1byte | ... |
SCA:短信中心号,如果设置00表示使用SIM卡中的默认短信中心号,还可以设置其他短信中心号这种情况不至1byte
MR: 一般为00
DA:发送的目标号
DCS:数据编码方式,08ucs2用于汉字(汉子不是妹子),00是7bit编码英文编码,04是8bit编码用于图片
VP:有效期一般FF
UDL:指UD的字节数
Pdu-Type:51有报头的短信,11普通短信
PDU-Type 类型说明
bit | 发送 | 接收 | 说明 |
7 | RP | RP |
0:不带恢复地址 1:带恢复地址 |
6 | UDHI | UDHI |
0:UD只是短信内容 1:UD开头是用户报头 |
5 | SRR | SRI |
0:不反馈报告 1:需要反馈 |
4,3 | VPF | VPF | 设置VP格式一般为10表示相对格式VP占1byte |
2 | RD | MMS |
0:普通短信 1:长短信 |
1,0 | MTI | MYI | 01:发送,00:接收 |
UD中除了短信内容还有UDHeader
UDHeader说明
1 | UDHL | 05:协议头长度 |
2 | information element identifier | 00:用一个字节进行编号的长短信 |
3 | length of sub-header | 03:信息单元头长 |
4 | reference number 参考号 | 区别不同短信的唯一标示 |
5 | number of short msg | 拆分后总条数 |
6 | sequence number of ther current | 拆分后第几条 |
上一篇: android开发的一些技巧