用C#做短信CMPP2.0/3.0协议 支持扩展号支持物理网卡
此程序为中国移动CMPP协议程序接口,适合在中国移动申请了短信发送端口的公司使用。
短信群发已经成为现在软件系统、网络营销等必不可少的应用工具。可应用在短信验证、信息群发、游戏虚拟商品购买、事件提醒、送祝福等方面。
本程序功能包括:
1、支持Cmpp2.0、3.0协议;(只能选其中一种) 2、支持一般的短信发送、上行短信接收、状态报告; 3、支持长短信,包括下发长短信、上行接收长短信; 4、支持Ms Sql数据库、MySql数据库; 5、支持普通手机号和物联网卡; 6、全套源码Win服务、全套数据库源码; |
开发CMPP协议需要注意的地方或一些经验:
程序适用于Cmpp3.0、Cmpp2.0协议,可用.Net任何版本编译。
1.长短信实现方法:
CMPP协议规定短消息最大长度为140,(DCS非0时)
拆分的消息UDHI字段要置为1表示该消息的内容有头结构。
针对长消息拆分的头结构表示如下
05 00 03 00 04 01 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
1 2 3 4 5 6
1,表示后面的头的长度,不包括自身
3,表示头结构为拆分的连续短消息。
5,表示拆分的总条数
6,表示该条为第几条。
具体的参见规范。
后面是编码后的短消息内容。
短消息长度为包括头结构的长度。
例如一条短消息编码后如下要拆分成3条
AAAAAABBBBBBCCCCCC
DCS为8
三条分别为:
05 00 03 00 03 01 00 41 00 41 00 41 00 41 00 41 00 41
05 00 03 00 03 02 00 42 00 42 00 42 00 42 00 42 00 42
05 00 03 00 03 03 00 43 00 43 00 43 00 43 00 43 00 43
三条消息的UDHI都为1
2.协议间的差异:
CMPP2.0写的程序,在CMPP2.1协议下也是可以用的,而且推荐企业向移动申请CMPP2.1协议的短信端口。
因为CMPP2.1比CMPP2.0有一项重大的改进:取消了CMPP_submit消息中群发短信必须设置为不接收状态报告的限制。
1、取消源ISMG”和“目的ISMG”的说法,把用户归属的ISMG简称为“归属ISMG”,把SP接入的ISMG简称为“接入ISMG”,如果“归属ISMG”和“接入ISMG”为同一个ISMG,则用“归属/接入ISMG”或者“接入/归属ISMG”来代称;但在泛称时仍可能使用“源ISMG”和“目的ISMG”; 2、明确SP与ISMG之间、ISMG与ISMG之间的连接建议为采用长连接方式; 3、明确SP与ISMG之间的连接方式:SP为客户端、ISMG为服务器端; 4、取消CMPP_SUBMIT中对短信群发必须在SP不要求状态报告时的限制; 5、状态报告中增加了MA:xxxx、MB:xxxx、CA:xxxx、CB:xxxx的状态值; 6、明确CMPP_FWD消息中的Src_Id和Dest_Id字段的填写情况,原则上不再允许状态报告中填写空值; 7、更新了GNS协议的所有消息,增加了GNS协议相关的系统定义(CommandId、错误码、Route_Id的编号规则); 8、添加了对错误码使用范围的说明; 9、删除了原“附录1 MO状态报告的产生”,因为MO状态报告在《移动梦网短信业务信令流程规范》中已经进行详细的说明; 10、因为要求ISMG对CMPP_SUBMIT中的各字段进行更详细的判断,添加了CMPP_SUBMIT_RESP中的返回码的取值范围; 11、删除了原CMPP_FWD中对状态报告的产生流程的描述,因为这些流程在《移动梦网短信业务信令流程规范》中已经进行了详细的说明; |
3.CMPP3.0支持物联网卡通讯
CMPP3.0协议对接收号码长度扩展至32位,并增加了号码类型字段。可以支持物联网卡。
用CMPP3.0协议做物联网卡通讯时需要注意的问题:请参考我的另一篇博文
测试小程序界面:
界面2:
Win服务版:短信Win服务程序+MsSql/MySql数据库源码,直接配置好win服务并启动,自己只需往数据库里面写入数据就可以发送短信,接收的短信保存在另一张表中,读取即可收到上行短信。
模拟网关界面:
CMPP2.0协议文档 CMPP3.0协议文档 下载CMPP2.0客户端 下载CMPP3.0客户端
同时有提供网关模拟器,抓包工具,长短信实现方法,以及参数如何填写的实例文档,使用该代码的测试小程序源码。
目前程序已经升级到V5.0版本,性能更加强大稳定。V5.0版演示如下:
下载 : CMPP3.0客户端V5.0版 CMPP3.0服务端V5.0版 也有2.0的,需要的请联系。
有偿提供与移动联调服务,承诺帮忙调试通过,并免费赠送源码。如有需要请联系 小y QQ(见下方) 请注明来意。