最近一段是時間項目可能需要提供短信功能,客戶作為一個 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}