最近一段是时间项目可能需要提供短信功能,客户作为一个 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}