众所周知,可能有些人未必知道,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 | 拆分后第几条 |
相关推荐
在"rxtx-2.1-7-bins-r2.zip"压缩包中,"rxtx-2.1-7pre16"可能是指RXTX的另一个预发布版本,而"rxtx-2.1.7.jar"是核心的Java库文件,包含RXTX的Java类。"www.pudn.com.txt"可能是一个说明文档或者下载来源的记录,...
4. **支持长短信**:SMPP能够处理长短信,将一条超过160个字符的短信拆分成多个短信片段发送。 5. **支持多种编码**:包括7位ASCII、8位GSM、UCS2等多种字符编码方式,满足不同语言和字符集的需求。 在压缩包中的...
在给定的文件"RXTX-2-2-20081207-Linux-x86_64.zip"中,包含了适用于64位Linux系统的RXTX库版本2.2,发布日期为2008年12月7日。 **RXTX库的核心功能:** 1. **串行通信接口**:RXTX提供了一组全面的API,允许Java...
mfz-rxtx-2.2-20081207-win-x64
在标题“rxtx-2.2-20081207-win-x64 rxtx_RXTXcomm_”中,我们可以看到RXTX的一个特定版本,即2.2版,针对64位Windows系统。"rxtx_RXTXcomm_"可能是指RXTX项目或相关文件夹的名字,强调了RXTX和串口通信的功能。 ...
标题 "mfz-rxtx-2.2-20081207-win-x86x64" 暗示我们正在处理一个特定版本的串口通信库,RXTX,适用于Windows操作系统,支持x86和x64架构。这个库是Java平台上的一个开源项目,用于实现与硬件设备进行串行通信的功能...
RXTXComm.jar 从官网http://fizzed.com/oss/rxtx-for-java下载的win-x86、win-x64、win-ia64、linux-i386、linux-x86_64版本的jar包
对于Windows系统,压缩包内的mfz-rxtx-2.2-20081207-win-x64.zip适用于64位操作系统,而mfz-rxtx-2.2-20081207-win-x86.zip则适用于32位操作系统。解压这两个zip文件后,会得到相应的dll动态链接库文件,这些库文件...
"RXTX-2.1-7"是该库的一个特定版本,它包含了多个组件以支持不同平台的通信需求。 首先,我们来看看这个版本包含的主要组件: 1. **RXTXcomm.jar**:这是RXTX的核心库文件,它包含了Java类和接口,供开发者在应用...
"rxtx-2.2-linux-windowx-x64.zip"这个压缩包包含了RXTX库在Windows 64位和Linux 64位系统上的版本,是Java开发者进行串口通信的重要工具。 首先,我们来了解一下RXTX的核心功能。RXTX库提供了一组Java类和接口,...
标题中的“mfz-rxtx-2.2-20081207-win-x64.rar”指的是一个特定版本的RXTX库的压缩包文件,适用于64位Windows操作系统。RXTX是一个开源的Java库,专门用于处理串行和并行通信。这个版本号(2.2)和日期(20081207)...
标题中的“mfz-rxtx-2.2-20081207-win-x86x64.zip”表明这是一个针对Windows平台(x86和x64架构)的Rxtx库的版本2.2,发布于2008年12月7日。Rxtx是一个开源的Java库,它提供了对串行通信的支持,允许Java程序与硬件...
这个“mfz-rxtx-2.2-20081207-win-x64”压缩包正是RXTX库的一个版本,特别针对Windows 64位系统进行了优化。 在Java中,标准库并没有内置串口通信的功能,因此RXTX库的存在弥补了这一空白。它为Java提供了与C语言的...
这个"RXTX-2-2-20081207"版本是RXTX的一个特定迭代,发布于2008年12月7日。在Java开发中,当需要进行硬件交互,例如控制Arduino、GSM模块或其他通过串口通信的设备时,RXTX库就显得非常有用。 RXTX库提供了跨平台的...
**rxtx-2.1-7r2详解** rxtx是一个开源的串行通信库,主要用于Java编程语言。它的全名是“Real Time eXtensions for Java”,为Java应用程序提供了串口(Serial Port)和并口(Parallel Port)通信的能力。rxtx库在...
标题中的“RXTX-2-2-20081207-Linux-i386.zip”指的是一个特定版本的RXTX库的压缩文件,适用于Linux平台的i386架构。RXTX是一个开源的Java库,它为Java应用程序提供了串行和并行通信的能力。这个版本发布于2008年12...
标题中的“mfz-rxtx-2.2-20081207-win-x64.zip”指的是一个特定版本的RXTX库的Windows 64位版本的压缩包,发布日期为2008年12月7日。RXTX是一个开源的Java库,它提供了串行(RS232)和并行通信的功能。这个库在Java...