中国移动EMPP v2.0 协议补充说明

http://blog.csdn.net/suvi/article/details/6566276




此文的依据是EMPP v2.0的协议,因为原有协议上的描述并不清晰,所以在此补充如下:

 

 

数据格式定义详解

 

1.      Octet string

C#中,Octet string 就是一个 byte[]数组,一般可以通过Encoding.ASCII.GetBytes(string) 来获得

 

2.      字节顺序

在Socket中,使用byte buffer传输数据时,必须对int,uint 等超过2个byte的整形进行传输字节调整,可以通过调用

IPAddress.HostToNetworkOrder进行转换,也可以通过指针进行转换

 

同理,从socket中获取的buffer,在转换回整形是,仍需要使用IPAddress.NetworkToHostOrder进行调整

 

3.      EMPP_CONNECT中的 AuthenticatorSource

AuthenticatorSource 使用的是 md5一组数据,这组数据的初始化,是根据

AccountId string类型,非Octet string +

9个二进制0 +

Password string类型 +

MMddHHmmss string类型的日期串

组成的 Octet string

也可以分别取各部分的string的 Octet String, 合并后再进行md5

 

4.      EMPP_ACTIVE_TEST

EMPPv2.0文档中建议的心跳包设置为

间隔时间 C = 3分钟

超时时间 T = 5秒

超时次数 N = 3次

可是实际应用中,当客户端1分钟无数据发送的话, EMPP服务端就做了拆线,收到 TCP:Flags: AF 标志

所以实际的应用中, 应该使用每分钟发送一次检测包

 

5.      EMPP_SUBMIT 长短信的设置

EMPPv2.0中关于长短信的格式设置没有做详细说明,要完成长短信,必须设置如下内容:

Ø  Tp_udhi 必须为1

Ø  Msg_fmt 必须为 08 (UCS2编码)

Ø  MsgContent 必须在头部增加6个字节的长短信标志位:

0x05 udhi 协议的体长度,可以为 05(6个字节的tp_udhi 协议)和 06(7个字节的协议),本系统采用的是6字节的udhi协议

0x01 参见 GSM 03.40 规范中 9.2.3.24.1,表示随后的这批长短信的标识位长度,取值为1,

0x03 表示剩下的短信标识的长度

0x00 短信的唯一标志,可以忽略之

0x02 长短信分割的数量, 2表示分成2段;4表示分成4段

0x01 长短信中的第几段

 

6.      EMPP_DELIVERY

当通过短信平台发送短信时,SMSC发送完毕,且客户端接收(仅仅检测到观看时的状态)到后,SMSC向SP发送了此状态报告,以表明用户已经观看了。更详细的信息,可以观看状态报告

手机发送的上行数据,也是通过 EMPP_DELIVERY来发送给平台的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值