基于CMPP3.0协议SP端的实现(C#)

最近一段是时间项目可能需要提供短信功能,客户作为一个 SP 端提供短信 业务;网上搜索了一番,找到了比较不错的 CMPP30 类的代码,该代码基本实现 了 CMPP3.0 协议中的短信收发、网络重连等功能。本人将其重新改造,提供了 同步发送、异步发送的支持(原先版本的异步发送并非标准的 .NET 异步发送模 式,这部分代码是一个异步操作实现的“范本”,可供大家参考),增加了对 PROVISION 接口的支持。

本人已将这些代码打包为一个 RAR 文件,稍后会上传到 Internet 供大家交 流、学习;下面将对这版 CMPP30 类的 API 进行简要介绍:

1)用于收发短信 CMPP30 类的 API:

1/**//// <summary>
2/// CMPP30 短信网关通讯组件(供 SP 使用)。
3/// </summary>
4public class CMPP30
5 {
6
7    属性#region 属性
8    /**//// <summary>
9    /// SMS 事件。
10    /// </summary>
11    public event EventHandler<SMSEventArgs> SMS;
12    #endregion
13
14    构造函数#region 构造函数
15    /**//// <summary>
16    /// 初始化 <see cref="CMPP30"/> 类新实例。
17    /// </summary>
18     public CMPP30(string spid, string password, string address, int port);
19    #endregion
20
21    公有方法#region 公有方 法
22    /**//// <summary>
23    /// 启动 CMPP30 服 务。
24    /// </summary>
25    public void Start ();
26    /**//// <summary>
27    /// 发送短信。
28    /// </summary>
29    /// /// <param name="text">
30    /// 信息内容。
31    /// </param>
32    /// <param name="encoding">
33     /// 信息编码。
34    /// </param>
35    /// <param name="sourceID">
36    /// SP的服务代码,将显示在最 终用户手机上的短信主叫号码。
37    /// </param>
38     /// <param name="destinations">
39    /// 接收短信的电 话号码列表。
40    /// </param>
41    /// <param name="serviceID">
42    /// 业务标识(如:woodpack)。
43     /// </param>
44    /// <param name="needReport">
45    /// 是否要求返回状态报告。
46     /// </param>
47    /// <param name="feeType">
48    /// 资费类别。
49    /// </param>
50    /// <param name="feeUserType">
51     /// 计费用户。
52    /// </param>
53    /// <param name="feeUser">
54    /// 被计费的号码(feeUserType 值为 FeeUser 时有效)。
55    /// </param>
56    /// <param name="realUser">
57    /// 被计费号码的真实身份(“ 真实号码”或“伪码”)。
58    /// </param>
59    /// <param name="informationFee">
60    /// 信息费(以“分 ”为单位,如:10 分代表 1角)。
61    /// </param>
62     /// <param name="linkID">
63    /// 点播业务的 LinkID 。
64    /// </param>
65    public CMPP_SUBMIT_RESP Send(
66        string text,
67        CEncoding encoding,
68        string sourceID,
69        string[] destinations,
70        string serviceID,
71         bool needReport,
72        FeeType feeType,
73         FeeUserType feeUserType,
74        string feeUser,
75        bool realUser,
76        int informationFee,
77        string linkID);
78    /**//// <summary>
79    /// 发送短信。
80    /// </summary>
81    public CMPP_SUBMIT_RESP Send(CMPP_SUBMIT submit);
82    /**//// <summary>
83    /// 开始异步 发送短信。
84    /// </summary>
85    /// <param name="text">
86    /// 信息内容。
87    /// </param>
88    /// <param name="encoding">
89     /// 信息编码。
90    /// </param>
91    /// <param name="sourceID">
92    /// SP的服务代码,将显示在最 终用户手机上的短信主叫号码。
93    /// </param>
94     /// <param name="destinations">
95    /// 接收短信的电 话号码列表。
96    /// </param>
97    /// <param name="serviceID">
98    /// 业务标识(如:woodpack)。
99     /// </param>
100    /// <param name="needReport">
101    /// 是否要求返回状态报告。
102     /// </param>
103    /// <param name="feeType">
104    /// 资费类别。
105    /// </param>
106    /// <param name="feeUserType">
107    /// 计费用户。
108    /// </param>
109    /// <param name="feeUser">
110     /// 被计费的号码(feeUserType 值为 FeeUser 时有效)。
111     /// </param>
112    /// <param name="realUser">
113    /// 被计费号码的真实身份(“真实号码 ”或“伪码”)。
114    /// </param>
115    /// <param name="informationFee">
116    /// 信息费(以“分” 为单位,如:10 分代表 1角)。
117    /// </param>
118     /// <param name="linkID">
119    /// 点播业务的 LinkID。
120    /// </param>
121    /// <param name="callback">
122    /// 异步回调函数。
123    /// </param>
124    /// <param name="asyncState">
125     /// 传递给异步回调函数的参数。
126    /// </param>
127    public IAsyncResult BeginSend(
128         string text,
129        CEncoding encoding,
130        string sourceID,
131        string[] destinations,
132        string serviceID,
133         bool needReport,
134        FeeType feeType,
135        FeeUserType feeUserType,
136         string feeUser,
137        bool realUser,
138         int informationFee,
139        string linkID,
140        AsyncCallback callback,
141         object asyncState);
142    /**//// <summary>
143     /// 开始异步发送短信。
144    /// </summary>
145     public IAsyncResult BeginSend(
146        CMPP_SUBMIT submit,
147        AsyncCallback cb,
148        object asyncState);
149    /**//// <summary>
150    /// 结束异步发送短信。
151    /// </summary>
152    public CMPP_SUBMIT_RESP EndSend(IAsyncResult ar);
153    /**//// <summary>
154    /// 停止 CMPP30 服务。
155    /// </summary>
156    public void Stop();
157    #endregion
158
159}

时间: 2024-11-02 18:27:09

基于CMPP3.0协议SP端的实现(C#)的相关文章

帮你深入理解OAuth2.0协议

原文地址: http://blog.csdn.net/seccloud/article/details/8192707   1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题.豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒店后,只需要将泊车钥匙交给服务生,停车的事情就由服务生去处理.与主钥匙相比,这种泊车钥匙的使用功能是受限制的:它只能启动发动机并让车行驶一段有限的距离,可以锁车,但无法打开后备箱

基于TCP/IP协议的C++网络编程(API函数版)

源代码:http://download.csdn.net/detail/nuptboyzhb/4169959 基于TCP/IP协议的网络编程 定义变量--获得WINSOCK版本--加载WINSOCK库--初始化--创建套接字 --设置套接字选项--关闭套接字--卸载WINSOCK库--释放所有资源 整个程序架构分为两大部分,服务器端客户端. 服务器SOCKET程序流程: socket()→bind()→listen→accept()→recv()/send()→closesocket() 客户端

golang实现简单的udp协议服务端与客户端示例_Golang

本文实例讲述了golang实现简单的udp协议服务端与客户端.分享给大家供大家参考,具体如下: 其实udp没有什么服务端和客户端的概念了,只是一个发一个收而已,只是这样较方便能识别和理解. 服务端: 复制代码 代码如下: package main import (     "fmt"     "net" ) func main() {     // 创建监听     socket, err := net.ListenUDP("udp4", &am

基于IP/UDP协议的sock编程

在VC知识库我学到了很多知识,很短的时间我就掌握了vc,主要是在贵站下了很多源代码回来分析,学习.看了你处有人将net send封装进行消息群发的源代码,有看见网上某某公司消息群发软件要花钱才能购买,于是有感自己编写一个消息群发小程序. 特点: vc源代码,基于IP/UDP协议的sock编程,按messager 服务的通信协议填写UDP数 据包,可在没有net send命令的win98 win95下实现消息发送,代码里含有messager 的通 信协议.并支持文本内容,ASCII文本图象发送.做

c++-C++如何开发基于web2.0的在线会议白板程序?

问题描述 C++如何开发基于web2.0的在线会议白板程序? C++如何开发基于web2.0的在线会议白板程序?需要用mfc编程技术么?socket是什么意思? 解决方案 http://wenku.baidu.com/link?url=O42MGvnXzbNlEH36ATCSqwbmmFYBFv0eXiOG7SjgIguLrVbQNltK_MJCUhJonvHKTEzvAH7ZpGZKaQk2PtGedufYDcXfwBmqdhQwY0HWT83

HEVC Study Two(基于HM14.0平台)--如何在HEVC中加入背景建模技术(一)

随着AVS的逐步发展,AVS中的一些创新也得到国际上越来越多学者的关注.尤其是AVS中针对监控视频编码的背景建模技术和感兴趣区域提取技术.对于国际同行来说,如何在HEVC的参考软件平台HM上加入这两项技术是一个工作量甚大的事情.本文就本人做的一些工作做简单介绍. 软件平台HM14.0,IDE:VS2010(英文版) 废话了这么多,下面开始真正的内容: 在<HEVC framework before starting encoding(基于HM14.0平台)>中(网址:点击打开链接)讲述了进入编

vs2012-VS2012新建MFC项目时可以选择framework版本,但是无论选什么新建完成后依旧是基于4.0

问题描述 VS2012新建MFC项目时可以选择framework版本,但是无论选什么新建完成后依旧是基于4.0 VS2012新建MFC项目时可以选择framework版本,但是无论选什么新建完成后依旧是基于4.0 另外,我的电脑是win8的 解决方案 Mfc没什么选择的,framework针对的是c#工程

编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)

编译可在Nexus5上运行的CyanogenMod13.0 ROM (基于Android6.0) 作者:寻禹@阿里聚安全 前言 下文中无特殊说明时CM代表CyanogenMod的缩写. 下文中说的"设备"均指Android设备. proprietary-blobs.txt文件的路径:device/lge/hammerhead/proprietary-blobs.txt 参考资料 How To Build CyanogenMod For Google Nexus 5 ("ham

求根据CMPP2.0协议开发的短信接口,语言为PHP

问题描述 求根据CMPP2.0协议开发的短信接口,语言为PHP 很急很急很急很急很急很急很急很急Workerman 解决方案 你可以看下中国电信的短信能力开发 现成有 demo 只需 获取 口令: 电信 移动 短信 和微信公众号 开发都一样 解决方案二: 麻烦能发一下URL吗?