PDU编码规则
(转载http://www.52rd.com/Blog/Detail_RD.Blog_yxgnba_6436.html)
目前,发送短消息常用Text和PDU(Protocol Data
Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,
也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-
bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符。一般的PDU编码由A B C D E F G H I J K L
M十三项组成。
A:短信息中心地址长度,2位十六进制数(1字节)。
B:短信息中心号码类型,2位十六进制数。
C:短信息中心号码,B+C的长度将由A中的数据决定。
D:文件头字节,2位十六进制数。
E:信息类型,2位十六进制数。
F:被叫号码长度,2位十六进制数。
G:被叫号码类型,2位十六进制数,取值同B。
H:被叫号码,长度由F中的数据决定。
I:协议标识,2位十六进制数。
J:数据编码方案,2位十六进制数。
K:有效期,2位十六进制数。
L:用户数据长度,2位十六进制数。
M:用户数据,其长度由L中的数据决定。J中设定采用UCS2编码,这里是中英文的Unicode字符。
PDU编码协议简单说明
例1 发送:SMSC号码是+8613800250500,对方号码是13693092030,消息内容是“Hello!”。从手机发出的PDU串可以是
08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 96 03 29 30 F0 00 00 00 06 C8 32 9B FD 0E 01
对照规范,具体分析:
分段 含义 说明
08 SMSC地址信息的长度 共8个八位字节(包括91)
91 SMSC地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)
68 31 08 20 05 05 F0 SMSC地址 8613800250500,补‘F’凑成偶数个
11 基本参数(TP-MTI/VFP) 发送,TP-VP用相对格式
00 消息基准值(TP-MR) 0
0D 目标地址数字个数 共13个十进制数(不包括91和‘F’)
91 目标地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)
68 31 96 03 29 30 F0 目标地址(TP-DA) 8613693092030,补‘F’凑成偶数个
00 协议标识(TP-PID) 是普通GSM类型,点到点方式
00 用户信息编码方式(TP-DCS) 7-bit编码
00 有效期(TP-VP) 5分钟
06 用户信息长度(TP-UDL) 实际长度6个字节
C8 32 9B FD 0E 01 用户信息(TP-UD) “Hello!”
例2 接收:SMSC号码是+8613800250500,对方号码是13693092030,消息内容是“你好!”。手机接收到的PDU串可以是
08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 96 03 29 30 F0 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21
对照规范,具体分析:
分段 含义 说明
08 地址信息的长度 个八位字节(包括91)
91 SMSC地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)
68 31 08 20 05 05 F0 SMSC地址 8613800250500,补‘F’凑成偶数个
84 基本参数(TP-MTI/MMS/RP) 接收,无更多消息,有回复地址
0D 回复地址数字个数 共13个十进制数(不包括91和‘F’)
91 回复地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)
68 31 96 03 29 30 F0 回复地址(TP-RA) 8613693092030,补‘F’凑成偶数个
00 协议标识(TP-PID) 是普通GSM类型,点到点方式
08 用户信息编码方式(TP-DCS) UCS2编码
30 30 21 80 63 54 80 时间戳(TP-SCTS) 2003-3-12 08:36:45 +8时区
06 用户信息长度(TP-UDL) 实际长度6个字节
4F 60 59 7D 00 21 用户信息(TP-UD) “你好!”
若基本参数的最高位(TP-RP)为0,则没有回复地址的三个段。从Internet上发出的短消息常常是这种情形。
注意号码和时间的表示方法,不是按正常顺序顺着来的,而且要以‘F’将奇数补成偶数。
在PDU
Mode中,可以采用三种编码方式来对发送的内容进行编码,它们是7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,
它将一串7-bit的字符(最高位为0)编码成8-bit的数据,每8个字符可“压缩”成7个;8-bit编码通常用于发送数据消息,比如图片和铃声等;
而UCS2编码用于发送Unicode字符。PDU串的用户信息(TP-UD)段最大容量是140字节,所以在这三种编码方式下,可以发送的短消息的最大
字符数分别是160、140和70。这里,将一个英文字母、一个汉字和一个数据字节都视为一个字符。
需要注意的是,PDU串的用户信息长度(TP-UDL),在各种编码方式下意义有所不同。7-bit编码时,指原始短消息的字符个数,而不
是编码后的字节数。8-bit编码时,就是字节数。UCS2编码时,也是字节数,等于原始短消息的字符数的两倍。如果用户信息(TP-UD)中存在一个头
(基本参数的TP-UDHI为1),在所有编码方式下,用户信息长度(TP-UDL)都等于头长度与编码后字节数之和。如果采用GSM
03.42所建议的压缩算法(TP-DCS的高3位为001),则该长度也是压缩编码后字节数或头长度与压缩编码后字节数之和。
分享到:
相关推荐
**smslib短信开发包详解** smslib是一款专为Java开发者设计的开源短信开发库,它提供了丰富的功能,便于开发者在Java应用中集成短信发送和接收功能。smslib的核心特性包括多线程处理、多种接口支持以及一个内置的...
【标题】"SMSLIB短信猫发送短信"是一个基于Java编程语言的Eclipse项目,它利用了SMSLIB组件来实现通过串口与短信猫设备进行通信,从而实现短信的发送功能。这个项目对于需要进行批量短信发送或者自动化短信通知的...
在IT行业中,短信服务常用于验证码验证、通知提醒等场景,而`smslib`是一个流行的Java库,专门用于实现这样的功能。本篇文章将详细讲解基于`smslib`的短信发送案例,以及与之相关的`Rxtx`库的使用。 首先,`smslib`...
使用java SMslib实现了短信猫收发短信。串口开发,串口配置工具,配合了完整的测试用例,可以使用到项目中。
在java下利用smslib的二次开发包使用短信猫进行短信收发,该资源包括smslib-3.3.0b2.jar,win32com.dll,javax.comm.properties,comm.jar,短信收发的两个示例文件以及简略的使用说明,具体的使用可以参考...
总的来说,"SMSLIB+RXTX 短信猫开发模块"是一个强大的工具,可以帮助开发者快速构建基于Java的短信应用,无论是简单的短信发送,还是复杂的短信服务系统,都可以通过这个模块高效地实现。其跨平台性和完整的库支持,...
SMSLIB是一个用Java编写的开源库,它提供了短信发送和接收的功能,为开发者提供了方便的API来实现短信服务。本篇将详细介绍如何使用SMSLIB进行Java短信收发,并结合实际例子进行说明。 首先,理解SMSLIB的核心概念...
【标题】"smslib java发送短信"涉及到的是Java平台下使用smslib库来实现短信发送的功能。smslib是一个开源的Java库,专为开发者提供发送和接收短信的能力,尤其适用于那些需要通过短信猫(Modem)或其他短信网关进行...
smslib使用rxtx发短信需要的jar,commons-net-3.0.1.jar ,jsmpp-2.1.0.jar,log4j-1.2.16.jar,RXTXcomm.jar, slf4j-api-1.6.3.jar,slf4j-log4j12-1.6.3.jar, smslib-3.5.2.jar
【smslib-v3-3.5.4 Java短信开发库】是Java编程环境中用于构建短信应用的一个开源库,尤其适用于需要进行短信发送、接收或管理的企业级系统。这个库为开发者提供了一组丰富的API,方便地集成短信功能,使得开发者...
标题中的“短信开发包 smslib.jar”指的是一个用于开发短信应用的Java库,名为smslib。这个库主要用于通过各种接口,如短信猫(Modem)或其他支持短信功能的硬件设备,实现短信的发送和接收。smslib是一个开源项目,...
SMSLib是一个开源的Java库,专门用于通过各种接口发送和接收短信。它的最新版本是v3.3.0,提供了一种高效且灵活的方式来管理短信通信。这个压缩包"smslib-v3.3.0-src.zip"包含了源代码和其他相关文件,便于开发者...
总结来说,"整理smslib RXTX发送短信64位环境"这个主题涉及到的关键知识点包括:64位系统兼容性、RXTX库的安装和配置、smslib的使用、串口通信参数设置、短信猫的连接、短信的发送以及错误处理。在实践过程中,务必...
【smslib发送短信】是一个基于Java的开源库,用于实现短信的发送和接收功能。它在IT领域中常被用于构建自动化的短信服务系统,如提醒、通知或验证。smslib支持GSM、CDMA等多种通信协议,允许开发者通过调用API来与...
【短信猫开发smslib源码】是一个用于与短信猫设备进行通信的开源库,主要针对Java平台。smslib是一个功能强大的库,它提供了一种简单而有效的方式来发送和接收通过短信猫设备进行的短消息。这个库对于那些需要在应用...
Java通过smslib发送短信是一种常见的通信技术,尤其在企业级应用和服务中,用于通知、验证或营销等场景。smslib是一个开源的Java库,专为发送和接收短信而设计,支持多种调制解调器、SMPP协议以及通过TCP/IP连接的...
在标题"SMSLib-Java-v2.1.0.zip_SMSLIB_SMSlib CServi_java 短信收发_短信收发_短信猫"中,我们可以看到这个压缩包包含了SMSLib的特定版本——v2.1.0,以及可能的CServi服务端实现,这表明该库不仅支持单向的短信...
**smslib-v3.5.2** 是一个基于Java的库,专为简化短信猫(Short Message Service Modem,简称SMS Modem)的开发而设计。这个库的主要目的是帮助开发者快速构建能够通过短信猫发送和接收短信的应用程序,从而节省在...
《smslib-3.5.4.jar:短信猫通信库详解》 smslib-3.5.4.jar 是一个专为短信猫设备提供通信服务的Java库,版本号为3.5.4。这个库的核心功能是使得开发者能够通过编程方式便捷地与短信猫进行交互,实现短信的发送、...
**SMSLIB+RXTX 短信猫开发模块及详细配置步骤** SMSLIB和RXTX是两个在Java环境中实现短信通信的重要库。本文将详细介绍如何使用这两个库来开发短信猫应用,并提供详细的配置步骤。 **SMSLIB** SMSLIB(Short ...