短信PDU编码解析

短信PDU编码解析

一 概述

  问题:接收飞信或者配合终端发送的长短信(两三百个字)或者接收运营商发送的话费信息,长短信总是接收不完整。其中会有某些段有丢失。

原因分析:

1 手机接收到了,但是拼接错误

         这样的结果是多条接收不完整的信息,基本上是可以排除的

2 网络发送了,手机信号问题或者繁忙,碰巧处理不过来

         网络端会收不到反馈信息,网络端会再发一条。

3 发送方的信息没全部发送

         通过确认发送成功。

4 网络根本就只发送此短信的某一段

         无法得知,但此原因的概率最高。

 

  此环境中此问题出现:拔打10086查询话费通话过程中,通过辅助机连续发送了5条长短信和飞信连续发送多条到测试机,

通话结束后查看,有一条手机发的短信显示不完整。

  网络出现问题的概率较高,连续性不断发送,造成网络出现问题。

但是仍然要明确确定是不是手机上仅仅接收到此条短信的其中的某几段。通过测试log分析PDU编码。

 

二 短信PDU编码分析

1 PDU内容:

a0 00 02 00 10 00 00 00 - 19 01 ad 01 0908 91 68

31 08 70 75 15 f0 00 a0 - 60 0d 91 68 31 62 98 83

25 f4 00 08 21 20 30 61 - 04 25 23 8c 05 00 03 6c

03 01 54 68 5e fa 5e 73 - 00 3a 00 20 30 00 00 32

……

从从第14个字节看起:

08:SMSC地址长度

91:地址类型,国际格式号码(号码前加“+”)

68:中国的国际区号,号码前加 +86

31 08 70 75 15 f0:短信中心地址/号码:字节内反转,13800757510,F补齐长度为偶数

00 a0 - 60 0d:通常接下来这里都是两个字节,这里怎么是四个??

应该标识以下位:这是条长短信,应该是60标识

其中0d:发送方地址/号码长度 00 a0是干什么的呢?

Bit7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

TP-RP

TP-UDHI

TP-SRR

未用

TP-MMS

TP-MTI

0

1

1

00

0

00

                




    注:TP-UDHI :TP-User-Data-Header-Indicator(用户数据头标示)

     0:没有头信息;1:有头信息,头信息格式(在用户数据前面的6个字节)

91 68 31 62 98 83 25 f4:91,86作用同前面,发送方地址/号码:+8613268938524

00 :协议标识TP-PID:普通GSM,点到点方式

08 :编码方式TP-DCS:三种:00表示7-bit编码(英文)、04表示8-bit编码(图片和铃声)、08表示UCS2编码(汉字)

21 20 30 61 - 04 25 23:时间戳TP-SCTS:12/02/03/16:40:52 32时区

8c :短信长度 140 短信内容字节长度,UCS2编码

05 00 03 6c 03 01:记录长短信的标识  非长短信则不带有此信息头

    05- 协议长度(后面占5位)

    00 表示拆分短信

    03 拆分数据的长度(后面的3位)

    6c 唯一标识(用于把多条短信合并)

    03 共被拆分3条短信

    01 序号,这是其中的第1条短信

其余字节:…… 短信内容

上面这个是正常电话号码发送的!

 

2 10086发送

66 00 02 00 10 00 00 00 - 09 01 73 01 01 08 91 68

31 08 70 75 15 f1 00 66 - 64 05 a1 01 80 f6 00 08     01 80 f6 号码:10086

21 20 30 61 73 33 23 56 - 05 00 03 18 02 02 00 33

5e 74 00 30 00 35 67 08 - 00 30 00 37 65 e5 ff 0c

67 08 7e d3 65 e5 4e 3a - 00 32 00 32 65 e5 ff 0c

60 a8 76 84 20 1c 00 31 - 00 30 52 06 20 1d 6e e1

61 0f ff 0c 62 11 4e ec - 76 84 65 e0 96 50 52 a8

52 9b 30 02 4e 2d 56 fd - 79 fb 52 a8 30 02

……

 

3 飞信发送

a1 00 02 00 10 00 00 00 - 19 01 ae 01 02 08 91 68

31 08 20 00 75 f1 00 a1 - 60 10 a8 21 25 10 53 29   刚好凑偶数 不用F补齐  号码:1252013592767045

67 07 54 00 08 21 20 30 - 61 24 40 23 8c 05 00 03

78 05 02 80 0c 88 68 73 - b0 51 fa 67 65 76 84 30

02 54 0c 65 f6 ff 0c 51 - 85 57 28 4e 0e 59 16 57

28 76 84 59 51 54 08 4e - 0e 54 8c 8c 10 65 e2 66

……

 

不同平台发送的信息,PDU编码会有一些不同。


转自:http://www.cnblogs.com/bastard/archive/2012/02/07/2340847.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值