CMPP和SMPP协议比较

并非同类型协议

CMPP和SMPP都是短信协议中的一种,但它们不是同一类型的协议。SMPP和ESME和SMC(短信中心)之间的协议,而CMPP是SP和中国移动ISMG之间的通讯协议。

以下是CMPP 3.0文档中的图示。

cmpp_001.JPG

与CMPP对应的协议有,联通的SGIP协议,中国电信的SMGP协议,网通的CNGP协议。

作为SP,只需要了解CMPP,不需要了解SMPP。

最新版本和兼容

SMPP协议是一个国际标准,有SMS论坛制定,官方网址为smsforum.net,截至2006年7月2日,最新版本是5.0。曾经流行的版本是3.3、3.4。SMPP协议向后兼容的。

CMPP最新版本似乎是3.0。现在(2006年7月),大多数还是使用CMPP 2.0。CMPP协议没有做到向后兼容,3.0的文档本身也没有讲到兼容的问题,甚至认为,协议制定者压根没想过要兼容。CMPP 3.0没做到向后兼容导致了一个问题,就是SP无法平滑升级。

PDU格式

PDU是协议数据单元的缩写,SMPP和CMPP都使用最先一个4位的长度标志整个PDU的长度。

cmpp_002.JPG

SMPP是一个国际标准,不同的SMC的是实现可能要增加特定参数,为了具备更好的扩展性,SMPP 3.4以上版本,增加了可选参数,在5.0中,可选参数叫做TLVTable。

CMPP是中国移动定义的其内部ISMG之间、ISMG与SP之间的通讯标准,涉及一些具体的计费信息,但没有可选参数。

在SMPP中,消息头包括4部分:PDU长度、Command_Id、Command_Status、Sequence_Id。其中Command_Status字段,只在回应消息中使用,存在冗余。

CMPP中,消息头部包括3部分:PDU长度、Command_Id、Sequence_Id。个人认为,CMPP中的消息头,不包括Command_Status,似乎更好一些。

消息传输模式

SMPP和CMPP都支持异步传输,CMPP中,建议异步传输的窗口大小为16。

CMPP使用一个连接发送短信息和接收短信息。

SMPP支持多种的连接,其中TX类型的连接,只能发送短信息,RX类型的连接只能接收短信息,TRX类型的连接支持接收和发送短信息。

SMPP 3.4中,消息传输模式分三中:Store And Forward、Datagram、Forward。分别用在大吞吐量、可靠性保证等不同的应用场合。

CMPP没有规定其消息传输的模式,根据实际使用的情况看来,华为的网关的消息传输模式类似SMPP协议中规定的Datagram模式。

java cmpp2.0 3.0 无jar纯源码demo(含服务端测试工具)[20171205] 找了挺多资料,CMPP的资源很多,但可以参考可用的不多, 特此开源cmpp的DEMO程序,无jar插件,纯源码实现。 语言为:java 工具为:Intellij IDEA 2017 附带第三方CMPP服务器测试工具,便于调试。 注解详细如: private long Msg_Id=0x00;//信息标识,由SP接入的短信网关本身产生,本处填空。 private byte Pk_total=0x01;//相同Msg_Id的信息总条数,从1开始 private byte Pk_number=0x01;//相同Msg_Id的信息序号,从1开始 private byte Registered_Delivery=0x01;//是否要求返回状态确认报告:0:不需要 1:需要 private byte Msg_level=0x01;//信息级别 private String Service_Id="";//业务类型,是数字、字母和符号的组合。 private byte Fee_UserType=0x00;//计费用户类型字段 0:对目的终端MSISDN计费; 1:对源终端MSISDN计费;2:对SP计费 private String Fee_terminal_Id="";//被计费用户的号码 private byte TP_pId=0x00;//GSM协议类型 private byte TP_udhi=0x00;//GSM协议类型。详细是解释请参考 private byte Msg_Fmt=0x0f;//信息格式0:ASCII串 3:短信写卡操作 4:二进制信息 8:UCS2编码 (0f)15:含GB汉字 private String Msg_src="";//信息内容来源(SP_Id) private String FeeType="01";//资费类别 01:对“计费用户号码”免费 02:对“计费用户号码”按条计信息费 03:对“计费用户号码”按包月收取信息费 04:对“计费用户号码”的信息费封顶 05:对“计费用户号码”的收费是由SP实现 private String FeeCode="000000";//资费代码(以分为单位) private String ValId_Time="";//存活有效期 private String At_Time="";//定时发送时间 private String Src_Id="";//源号码 SP的服务代码或前缀为服务代码的长号码, 网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段,该号码最终在用户手机上显示为短消息的主叫号码 private byte DestUsr_tl=0x01;//接收信息的用户数量(小于100个用户) private String Dest_terminal_Id="";//接收短信的MSISDN号码 private byte Msg_Length;//信息长度(Msg_Fmt值为0时:<160个字节;其它<=140个字节) private byte[] Msg_Content;//信息内容 private String Reserve="";//保留
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值