接收的短消息之SMS - Diliver

别人发来的短消息;

1.结构(字段顺序):

SMSC(来源短消息SMSC号码,1~20octs),
TP-DUH(TP-DU头部,1oct),
TP-OA(来源地址号码,2~12octs),
TP-PID(协议标志,1oct),
TP-DCS(编码标志,1oct),
TP-SCTS(SMSC时间戳,14octs),
TP-UDL(TP-UD字段的长度,1oct),
TP-UD(短消息内容,TP-UDL octs);

2.SMSC字段:
短消息服务中心号码。
第2oct表示SMSC号码类型,第3及之后的octs表示号码BCD码编码,第1oct个SMSC字段占用的oct数,但是第1个oct不算在内。
SMSC号码类型oct的bit7恒定为1,
bit6~bit4表示号码种类:
0 0 0  未知
0 0 1  国际号码
0 1 0  国内号码
0 1 1  网络特殊号码
1 0 0  Subscriber number
1 0 1  Alphanumeric, (coded according to GSM TS 03.38 7 bit default alphabet)
1 1 0  Abbreviated number
1 1 1  为扩展保留
bit3~bit0:表示拨号方案:
0 0 0 0  未知
0 0 0 1  ISDN/电话
0 0 1 1  数据号码
0 1 0 0  传真号码
1 0 0 0  国内号码
1 0 0 1  私有号码
1 0 1 0  ERMES numbering plan
1 1 1 1  保留
其他值保留。通常情况下,0x90~0x9F,在号码前加"+",否则不变。
号码octs:压缩BCD编码,每个数码占半个oct,若数码位数为奇数,最后一个oct的高4位用0xF补充,尊循前面的号码在低4位,后面的号码在高4位的原则。如号码:+8613800100050就成了683108100050F0,前面在加上0891,变为0891683108100050F0,就成了完整的SMSC字段。

3.TP-DUH字段
在SMS - Deliver结构中,TP-DUH字段只有以下字段有效,其他位取值忽略。他们是:
1)TP_MTI:
bit1 bit0 意指
 0    0   SMS - Deliver
 0    1   SMS - Submit - Report
 1    0   SMS - Status - Report
 1    1   保留

2)TP-MMS: bit2 值1/0 是否有更多的短消息需要接收(有的话暂不显示,有可能是长短消息);

3)TP-SRI: bit5 值1/0 发送方是否要求发送回执;

4)TP-UDHI: bit6 值1/0 TP-UD字段是否含有头部;

5)TP-RP : bit7 值1/0 是否可以使用回复路径功能(回复时可以使用SMSC字段里指明的短消息服务中心号码)。

4.TP-OA字段:
来源电话号码,指明这个短消息来自这个号码。
第一个oct:号码位数(国际号码不包括前面的“+”)的十六进制形式(此处与前述SMSC字段不同)。
第二个oct:号码类型。
剩下的号码octs:压缩BCD编码形式的号码。
号码类型、号码octs,参见前述SMSC字段相关介绍。

5.TP-PID字段:(协议标志,貌似我国几大移动运营商未使用,可忽略)

6.TP-DCS字段:
TP-UD字段的编码标志。
0x00~0x3F:一般短消息提示
  bit5 值1/0 是否压缩 //GSM标准压缩算法,不明白。
  bit4 值1/0 是否含有分类标志码
  bit3 bit2 使用的字符集
   0    0   默认字母表(与ASCII类似,7bits数据)
   0    1   8bits数据
   1    0   16bits数据(USC2)
   1    1   保留
  bit1 bit0 Message Class//还没弄明白
   0    0   0类短消息
   0    1   1类短消息 一般指关于手机的特殊短消息
   1    0   2类短消息 关于SIM卡的特殊短消息
   1    1   3类短消息 一般指关于短消息应用程序的特殊短消息

0x40~0xBF:保留

0xC0~0xCF:短消息等待提示,不存储。使用默认字母表(类似ASCII)编码。
  bit3 值1/0 是否产生提示
  bit2 保留,置0;
  bit1 bit0 意指
   0    0   语音信箱 
   0    1   传真
   1    0   电子邮件
   1    1   其他

0xD0~0xDF:短消息等待提示,存储。字符集同上,其他位的意义同上。

0xE0~0xEF:短消息等待提示,存储。TP-UD使用USC2编码,其他位的意义同上。

0xF0~0xFF:数据编码方式和Message Class。
  bit3 保留,置0。
  bit2 值1/0 表示8-bit编码/默认字母表。
  bit1 bit0 意指同0x00~0x3F,同样没弄明白。

7.TP-SCTS:时间戳(短消息服务中心收到短消息发送请求的时间)
结构:年月日时分秒各2octs,时区2octs,共14octs,压缩BCD编码前面的字节在低4位。
其中,时区字段内存储的值是值,短消息服务中心所在地时间与标准时间(格林威治时间)之间1刻钟(15分钟,1/4小时)的数量。
时区字段数值的bit7 值1/0 表示东时区/西时区
比如,中国所用时区示为东8区,时区字段数值就是32,编码后为23。

8.TP-UDL:TP-UD字段字节数(十六进制)

9.TP-UD:短消息内容

1)TP-UD的头部,根据TP-DUH的TP-UDHI判断是否存在。
TP-UD的头部结构:
TP-UDHL(头部长度,不包含自身,1oct);
TP-UDE1I(头部元素1ID,1oct)
TP-UDE1L(头部元素1内容的长度,1oct)
TP-UDE1(头部元素1内容,TP-UDE1L个octs)
... ...
TP-UDEn
... ...

2)TP-UD:的内容编码。

你可能感兴趣的:(算法,report,存储,Class,sms,电话)