用C#做短信CMPP2.0/3.0协议 支持扩展号支持物理网卡

此程序为中国移动CMPP协议程序接口,适合在中国移动申请了短信发送端口的公司使用。

短信群发已经成为现在软件系统、网络营销等必不可少的应用工具。可应用在短信验证、信息群发、游戏虚拟商品购买、事件提醒、送祝福等方面。

本程序功能包括:

1、支持Cmpp2.0、3.0协议;(只能选其中一种)

2、支持一般的短信发送、上行短信接收、状态报告;

3、支持长短信,包括下发长短信、上行接收长短信;

4、支持Ms Sql数据库、MySql数据库;

5、支持普通手机号和物联网卡;

6、集成了邮件群发功能;

7、全套源码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协议文档  

 同时有提供网关模拟器,抓包工具,长短信实现方法,以及参数如何填写的实例文档,使用该代码的测试小程序源码。

 有偿提供与移动联调服务,承诺帮忙调试通过,并免费赠送源码。如有需要请联系 小y QQ:271963990  请注明来意。

 

转载于:https://www.cnblogs.com/tuyile006/archive/2009/04/16/1437503.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新算法可模拟人脑整体神经电路

来源:科学网 作者:陈超3月28日,日本理化学研究所日前宣布,他们的一个国际联合研究小组成功开发出模拟人脑整体神经电路的算法,可在下一代超级计算机上应用。新算法不仅节省内存,也能大幅提高现有超级计算机…

Spring Data JPA 从入门到精通~@Query详解

语法及其源码 public interface Query {/*** 指定JPQL的查询语句。(nativeQuerytrue的时候,是原生的Sql语句)*/String value() default "";/*** 指定count的JPQL语句,如果不指定将根据query自动生成。* (如…

Java中的mapreduce没了_MapReduce的过程总结

MapReduce 分为:1) MapTask :1.Read阶段:逻辑切片 128M / Maptask 读数据解析出一个个key/value。2.Map阶段: 把key/value 写入到map中去(处理业务逻辑)3.Collect阶段:将生成的key/value分区(调用Partitioner)排序,并写…

酒桌上的规矩,社会的潜规则

(一)如果自己真不能喝,丫就别开第一口,端着饭碗夹了菜一边吃着去(二)如果确信自己要喝,就别装墨迹,接下来就是规矩了  规矩一:酒桌上虽然“感情深,一口闷;感情浅,舔一舔”但是喝酒…

7个方面读懂6月的5G标准

来源:5G丨公众号作为IMT2020主要的候选技术, 5GNR在3GPP的快马加鞭地统一协调下急速前行,按照计划,今年第一个5G标准会冻结,将为运营商提供一套5G初期部署的可行方案。5GNR 是5G New Radio的简称,是当今通信…

Linux进制查看工具:od、hexdump、xxd

od 命令 :http://man.linuxde.net/od od 命令 od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常使用od命令查看特殊格式的文件内容,或者用于显示或查看文件中不能直接显示在终端的字符。 od命令系…

Spring Data JPA 从入门到精通~@Param用法

默认情况下,参数是通过顺序绑定在查询语句上的,这使得查询方法对参数位置的重构容易出错。为了解决这个问题,可以使用 Param 注解指定方法参数的具体名称,通过绑定的参数名字做查询条件,这样不需要关心参数的顺序&…

园子里关于罗辑树与视觉树的文章

http://www.cnblogs.com/YilingLai/archive/2006/12/22/600279.html转载于:https://www.cnblogs.com/refeiner/archive/2009/04/18/1438950.html

专家谈计算机体系架构研究获“图灵奖”

来源:科学网 作者:王佳雯 韩扬眉近日,有着“计算机界的诺贝尔奖”之称的“图灵奖”揭开面纱。国际计算机协会宣布,美国科学家约翰轩尼诗和大卫帕特森获得2017年度图灵奖,以表彰二人开创了一种系统的、可量化的方法用…

编译和使用APUE的源码

From:http://blog.csdn.net/mitesi/article/details/19015397 APUE说明及源码下载地址 :http://www.apuebook.com/ APUE 电子版 PDF 下载地址:http://download.csdn.net/download/freeking101/10012610 1. 介绍 总结:APUE是一本…

java标签用法详解_介绍一个javaWeb自定义标签的用法详解

这篇文章主要介绍了javaWeb自定义标签用法,结合实例形式分析了javaweb自定义标签的功能、定义方法及执行原理,需要的朋友可以参考下本文实例讲述了javaWeb自定义标签用法。分享给大家供大家参考,具体如下:自定义标签创建自定义标签主要用于移除Jsp页面中…

Spring Data JPA 从入门到精通~SpEL表达式的支持

在 Spring Data JPA 1.4 以后,支持在 Query 中使用 SpEL 表达式(简介)来接收变量。 SpEL 支持的变量 变量名 使用方式 描述 entityName select x from #{#entityName} x 根据指定的Repository自动插入相关的entityName 有两种方式能被解…

由partition看窗口函数

最近要完成一个项目,有一个查询可难住了笔者,无论是子查询还是分组,都没弄出来,还是基础知识不行啊。不过呢,可以查资料,最后用一个窗口函数解决了问题。由于开始的数据库是Access,后来笔者导成…

AI版「盗梦空间」?谷歌大脑「世界模型」可实现在其梦境中对智能体进行训练

图源:pixabay原文来源:arXiv原文链接:https://arxiv.org/pdf/1803.10122.pdf作者:David Ha、Jurgen Schmidhuber「雷克世界」编译:嗯~是阿童木呀、KABUDA我们探索构建通用强化学习环境中的生成式神经网络模型。我们的世…

Linux文件空洞与稀疏文件

From:http://www.topjishu.com/8277.html From:http://blog.csdn.net/clamercoder/article/details/38361815 Linux_File_Hole_And_Sparse_Files 参考unix环境高级编程第三版 54页和90页!!! ( 文件I/O章节 lseek…

Spring Data JPA 从入门到精通~@Modifying修改查询

学习思路一样,我们先看源码: public interface Modifying { //如果配置了一级缓存,这个时候用clearAutomaticallytrue,就会刷新hibernate的一级缓存了, 不然你在同一接口中,更新一个对象,接着查询这个对象…

java volatile修饰引用_关于volatile修饰引用类型的疑惑

volatile修饰引用类型能否保证可见性似乎一直没有一个定论,有的书中说仅能保证引用本身的可见性,下面用两段代码来验证:流程基本为一个线程死循环读取某个引用类型的某个变量的值,另一个线程修改这个值,观察线程是否结…

gridview 简单的分页

allowpaging 设为 true 然后 后台代码为: protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex e.NewPageIndex; Get_Gridview(); } Get_Gridview();是绑定gridview 的方法 转载于:https…

西人马聂泳忠:打造机器神经系统,成为中国的特斯拉

作者:于绍洋 来源:投资家网经常穿梭于几个城市,一手拉着行李箱,一手忙于回复工作上的事务,这可能已经成为西人马FATRI(下称,西人马)创始人聂泳忠博士的日常状态。他给人的第一印象…

Linux dd 命令

From:http://www.cnblogs.com/jikexianfeng/p/6103500.html Linux/UNIX: 使用 dd 命令创建 1GB 大小的二进制:http://www.linuxidc.com/Linux/2014-12/110147.htm 菜鸟教程 Linux dd命令:http://www.runoob.com/linux/linux-comm-dd.html …