`
xiaoyu
  • 浏览: 80700 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论
阅读更多
基本数据类型
Unsigned Integer   无符号整数
Integer 整数,可为正整数、负整数或零
Octet String 定长字符串,位数不足时,如果左补0则补ASCII表示的零以填充,如果右补0则补二进制的零以表示字符串的结束符

消息结构
项目 说明
Message Header 消息头(所有消息公共包头)
Message Body 消息体

消息头格式(Message Header)
字段名 字节数 类型 描述
Total_Length  4 Unsigned Integer 消息总长度(含消息头及消息体)
Command_Id 4 Unsigned Integer 命令或响应类型
Sequence_Id 4 Unsigned Integer 消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同)

------------------------------------------------
业务提供商(SP)与互联网短信网关(ISMG)间的消息定义
   SP为客户端,向作为服务器端的ISMG发起连接请求,在通过身份验证之后SP与ISMG之间方可进行数据传输。

SP请求连接到ISMG(CMPP_CONNECT)操作
CMPP_CONNECT操作的目的是SP向ISMG注册作为一个合法SP身份,若注册成功后即建立了应用层的连接,此后SP可以通过此ISMG接收和发送短信。

ISMG以CMPP_CONNECT_RESP消息响应SP的请求。

CMPP_CONNECT消息定义(SPàISMG)
字段名 字节数 属性 描述
Source_Addr  6 Octet String 源地址,此处为SP_Id,即SP的企业代码。
AuthenticatorSource 16 Octet String 用于鉴别源地址。其值通过单向MD5 hash计算得出,表示如下:
AuthenticatorSource =

MD5(Source_Addr+9 字节的0 +shared secret+timestamp)

Shared secret 由中国移动与源地址实体事先商定,timestamp格式为:MMDDHHMMSS,即月日时分秒,10位。

Version 1 Unsigned Integer 双方协商的版本号(高位4bit表示主版本号,低位4bit表示次版本号),对于3.0的版本,高4bit为3,低4位为0
Timestamp 4 Unsigned Integer 时间戳的明文,由客户端产生,格式为MMDDHHMMSS,即月日时分秒,10位数字的整型,右对齐 。

CMPP_CONNECT_RESP消息定义(ISMG à SP)
字段名 字节数 属性 描述
Status 4 Unsigned Integer 状态
0:正确

1:消息结构错

2:非法源地址

3:认证错

4:版本太高

  5~ :其他错误

AuthenticatorISMG 16 Octet String ISMG认证码,用于鉴别ISMG。
其值通过单向MD5 hash计算得出,表示如下:

AuthenticatorISMG =MD5(Status+AuthenticatorSource+shared secret),Shared secret 由中国移动与源地址实体事先商定,AuthenticatorSource为源地址实体发送给ISMG的对应消息CMPP_Connect中的值。

认证出错时,此项为空。

Version 1 Unsigned Integer 服务器支持的最高版本号,对于3.0的版本,高4bit为3,低4位为0

SP或ISMG请求拆除连接(CMPP_TERMINATE)操作
CMPP_TERMINATE操作的目的是SP或ISMG基于某些原因决定拆除当前的应用层连接而发起的操作。此操作完成后SP与ISMG之间的应用层连接被释放,此后SP若再要与ISMG通信时应发起CMPP_CONNECT操作。

ISMG或SP以CMPP_TERMINATE_RESP消息响应请求。

CMPP_TERMINATE消息定义(SPàISMG或ISMG à SP)
无消息体。

CMPP_TERMINATE_RESP消息定义(SPàISMG或ISMG à SP)
无消息体。

SP向ISMG提交短信(CMPP_SUBMIT)操作
CMPP_SUBMIT操作的目的是SP在与ISMG建立应用层连接后向ISMG提交短信。

ISMG以CMPP_SUBMIT_RESP消息响应。

CMPP_SUBMIT消息定义(SPàISMG)
字段名 字节数 属性 描述
Msg_Id 8 Unsigned Integer 信息标识。
Pk_total 1 Unsigned Integer 相同Msg_Id的信息总条数,从1开始。
Pk_number 1 Unsigned Integer 相同Msg_Id的信息序号,从1开始。
Registered_Delivery 1 Unsigned Integer 是否要求返回状态确认报告:
0:不需要;

1:需要。

Msg_level 1 Unsigned Integer 信息级别。
Service_Id 10 Octet String 业务标识,是数字、字母和符号的组合。
Fee_UserType 1 Unsigned Integer 计费用户类型字段:
0:对目的终端MSISDN计费;

1:对源终端MSISDN计费;

2:对SP计费;

3:表示本字段无效,对谁计费参见Fee_terminal_Id字段。

Fee_terminal_Id 32 Octet String 被计费用户的号码,当Fee_UserType为3时该值有效,当Fee_UserType为0、1、2时该值无意义。
Fee_terminal_type 1 Unsigned Integer 被计费用户的号码类型,0:真实号码;1:伪码。
TP_pId 1 Unsigned Integer GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.9。
TP_udhi 1 Unsigned Integer GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐。
Msg_Fmt 1 Unsigned Integer 信息格式:
0:ASCII串;

3:短信写卡操作;

4:二进制信息;

8:UCS2编码;

15:含GB汉字。。。。。。

Msg_src 6 Octet String 信息内容来源(SP_Id)。
FeeType 2 Octet String 资费类别:
01:对“计费用户号码”免费;

02:对“计费用户号码”按条计信息费;

03:对“计费用户号码”按包月收取信息费。

FeeCode 6 Octet String 资费代码(以分为单位)。
ValId_Time 17 Octet String 存活有效期,格式遵循SMPP3.3协议。
At_Time 17 Octet String 定时发送时间,格式遵循SMPP3.3协议。
Src_Id 21 Octet String 源号码。SP的服务代码或前缀为服务代码的长号码, 网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段,该号码最终在用户手机上显示为短消息的主叫号码。
DestUsr_tl 1 Unsigned Integer 接收信息的用户数量(小于100个用户)。
Dest_terminal_Id 32*DestUsr_tl Octet String 接收短信的MSISDN号码。
Dest_terminal_type 1 Unsigned Integer 接收短信的用户的号码类型,0:真实号码;1:伪码。
Msg_Length 1 Unsigned Integer 信息长度(Msg_Fmt值为0时:<160个字节;其它<=140个字节),取值大于或等于0。
Msg_Content Msg_length Octet String 信息内容。
LinkID 20 Octet String 点播业务使用的LinkID,非点播类业务的MT流程不使用该字段。



系统应该支持短信的群发功能,关于短信群发功能的实现请参阅“附录1 短信群发功能的实现”。

CMPP_SUBMIT_RESP消息定义(ISMG à SP)


字段名 字节数 属性 描述
Msg_Id 8 Unsigned Integer 信息标识,生成算法如下:
采用64位(8字节)的整数:

时间(格式为MMDDHHMMSS,即月日时分秒):bit64~bit39,其中
bit64~bit61:月份的二进制表示;

bit60~bit56:日的二进制表示;

bit55~bit51:小时的二进制表示;

bit50~bit45:分的二进制表示;

bit44~bit39:秒的二进制表示;

短信网关代码:bit38~bit17,把短信网关的代码转换为整数填写到该字段中;
序列号:bit16~bit1,顺序增加,步长为1,循环使用。
各部分如不能填满,左补零,右对齐。

(SP根据请求和应答消息的Sequence_Id一致性就可得到CMPP_Submit消息的Msg_Id)

Result 4 Unsigned Integer 结果:
0:正确;

1:消息结构错;

2:命令字错;

3:消息序号重复;

4:消息长度错;

5:资费代码错;

6:超过最大信息长;

7:业务代码错;

8:流量控制错;

9:本网关不负责服务此计费号码;

10:Src_Id错误;

11:Msg_src错误;

12:Fee_terminal_Id错误;

13:Dest_terminal_Id错误;

……

分享到:
评论

相关推荐

    error message_errormessage_

    "error message_errormessage_" 这个标题可能是指一个特定的错误处理机制或者函数,其核心是创建一个与具体硬件或系统设备无关的错误传递方式。这样的设计使得程序的错误处理代码更加通用,适应性更强,可以在不同的...

    Thread,Looper,Handler,Message,MessageQueue,MessagePool之间的关系

    在Android系统中,线程(Thread)、Looper、Handler、Message以及MessageQueue和MessagePool是实现异步消息处理机制的关键组件,它们共同构建了一个高效的事件驱动模型。这些组件的关系紧密,协同工作,使得Android...

    matlab开发-message

    在MATLAB编程环境中,`message`函数是一个非常实用的工具,尤其在开发过程中用于输出调试信息或用户提示。本文将深入探讨`message`函数的使用、功能及其与`fprintf`和`warning`的区别。 首先,`message`函数是...

    Message,MessageQueue,Looper,Handler详解

    ### Message,MessageQueue,Looper,Handler详解 #### 一、几个关键概念 ##### 1、MessageQueue:消息队列 MessageQueue是一种数据结构,顾名思义,它充当了一个消息队列的角色,用来存放各种消息对象。每一个线程...

    SAP Message发送手册

    《SAP Message发送手册》详述了如何向SAP官方提交技术问题,这对于处理与SAP系统相关的疑难问题至关重要。SAP Message服务是为A1客户提供的一种支持方式,只有这类客户的问题可以通过特定的账号发送消息。在不确定...

    DELPHI POSTMESSAGE后台模拟按键源代码

    DELPHI POSTMESSAGE后台模拟按键源代码是一种编程技术,主要用于在 Delphi 开发环境中实现程序间的通信和控制。这一技术的核心在于使用 Windows API 中的 `PostMessage` 函数,该函数允许一个进程向另一个进程发送...

    C# MessageQueue示例

    MessageQueue,又称消息队列,是C#中处理异步通信和解耦组件的重要技术。它允许应用程序之间通过消息传递数据,而无需彼此直接交互。下面将详细介绍C#中的MessageQueue以及如何使用它来发送和接收消息。 1. **...

    Microsoft Message Analyzer.zip

    微软消息分析器(Microsoft Message Analyzer,简称MMA)是一款由微软公司开发的强大网络通信日志分析工具。它为IT专业人员提供了深入洞察网络通信过程的能力,帮助他们诊断、调试和优化网络性能。这款工具能够捕获...

    抓包工具MessageAnalyzer

    **MessageAnalyzer:微软的强大网络分析工具** MessageAnalyzer是微软推出的一款高级网络诊断和分析工具,专为IT专业人员设计,用于捕获、查看、解析和分析各种网络协议和消息数据。这款工具集成了多种功能,使得对...

    Android的消息处理机制--Message,MessageQueue

    本篇文章将详细探讨Android的消息处理机制,特别是Message和MessageQueue这两个核心概念。 #### 二、Android消息处理机制概述 当Android应用启动后,会创建一个主进程,在这个进程中包含了UI主线程。UI主线程负责...

    活用Android的Message Queue

    在Android开发中,Message Queue是一种重要的机制,用于在不同线程间进行异步通信和任务调度。理解并熟练运用Message Queue、Looper和Handler是构建高效、响应性良好的Android应用的关键。 1. **Message Queue...

    原生JS消息提示特效插件Message.js.zip

    Message.js 是一个专为实现这种功能而设计的原生JavaScript插件。这个插件允许开发者轻松地在网页上添加各种样式和动画效果的消息提示,无需依赖其他大型库如jQuery,从而提高页面加载速度并降低资源消耗。 Message...

    微信小程序webview与h5通过postMessage实现实时通讯的实现

    在做 React Native 应用时,如果需要在 App 里面内嵌 H5 页面,那么 H5 与 App 之间可以通过 Webview 的 PostMessage 功能实现实时的通讯,但是在小程序里面,虽然也提供了一个 webview 组件,但是,在进行 post...

    PostMessage or SentMessage 的消息创建

    本文档将详细介绍如何在两个C++类之间通过自定义消息来实现数据的传递,主要涉及`PostMessage`和`SendMessage`函数的使用。 首先,我们需要创建自定义的消息。在MFC中,这通常通过类向导完成。打开DLG(Dialog)类...

    Message解压打包工具

    在IT行业中,"Message解压打包工具"是一种用于处理消息数据的软件,它集成了解压和打包的功能,便于用户对消息文件进行管理和传输。在最新版本中,该工具引入了"透明功能选项",这使得操作过程更加简便且不易察觉,...

    Android的Message机制(Handler、Message、Looper)

    ### Android的Message机制详解 #### 一、概述 在Android开发中,消息机制是一个非常重要的概念,它由多个核心组件组成,包括`Handler`、`Message`、`Looper`等。这一机制支持了应用程序内部以及应用程序间的通信。...

    js中窗口的postMessage方法1

    window.postMessage() 方法的语法为:`otherWindow.postMessage(message, targetOrigin, [transfer])`,其中 `otherWindow` 是其他窗口的一个引用,`message` 是要发送到其他窗口的数据,`targetOrigin` 是指定哪些...

    jquery ui Message 简单使用

    《jQuery UI Message 简单使用详解》 在Web开发中,用户交互是至关重要的,良好的用户体验往往离不开适时、恰到好处的提示信息。jQuery UI的Message组件为此提供了便利,它能够帮助开发者创建各种风格的提示框,为...

    PostMessage 后台模拟按键 MOUSE VC原码

    `PostMessage`函数就是这样的一个工具,它允许程序在目标窗口的message queue中放置一个消息,而不是立即处理它。这个功能在自动化测试、游戏外挂、远程控制软件等领域有广泛应用。在VC++(Microsoft Visual C++)...

Global site tag (gtag.js) - Google Analytics