中国移动短信网关CMPP3.0 C#源代码:使用示例

Using Tiray.SMS
...

Tiray.SMS.CMPP30 m_CMPP=new Tiray.SMS.CMPP30();
...

//启动CMPP
m_CMPP=new CMPP30(txt_CMUserName.Text.Trim(),txt_CMPassword.Text.Trim(),txt_CMServerAddress.Text.Trim(),Convert.ToInt32(txt_CMServerPort.Text.Trim()));
m_CMPP.SMSStateChanged+=new SMSEventHandler(OnCMPP);//定义事件处理函数
m_CMPP.StartThread();
...

//终止CMPP
m_CMPP.EndThread();
...

//移动短信网关事件(异步处理)
protected void OnCMPP(Object sender,SMSEventArgs e)  
{
 SMSAsyncEvent ae = new SMSAsyncEvent(ProcessCMPPEvent);
 IAsyncResult ar=null;
 ar = ae.BeginInvoke(e,new AsyncCallback(CMPPAsyncEventCallBack),ae);
}

//异步事件处理函数
protected void ProcessCMPPEvent(SMSEventArgs e)
{
 string strState=string.Empty;
 if(e.State==SMS_STATE.DELIVER)
 {
  CMPP_DELIVER deliver=(CMPP_DELIVER)e.Data;
  ...
 }
   
 else if(e.State==SMS_STATE.DELIVER_RESPONSE)
 {
  CMPP_DELIVER_RESP resp=(CMPP_DELIVER_RESP)e.Data;
  ...  
 }
 else if(e.State==SMS_STATE.REPORT)
 {
  CMPP_DELIVER deliver=(CMPP_DELIVER)e.Data;
  CMPP_REPORT report=deliver.GetReport();
  ...
 }
 else if(e.State==SMS_STATE.SUBMIT)
 {
  CMPP_SUBMIT submit=(CMPP_SUBMIT)e.Data;
  ... 
 }
 else if(e.State==SMS_STATE.SUBMIT_RESPONSE)
 {
  CMPP_SUBMIT_RESP resp=(CMPP_SUBMIT_RESP)e.Data;
  ...
 }
 else if(e.State==SMS_STATE.ACTIVE_TEST)
 {
  ...   
 }
 else if(e.State==SMS_STATE.ACTIVE_TEST_RESPONSE)
 {
  CMPP_ACTIVE_TEST_RESP resp=(CMPP_ACTIVE_TEST_RESP)e.Data;
  ...   
 }
 else if(e.State==SMS_STATE.SP_CONNECT)
 {
  CMPP_CONNECT_RESP resp=(CMPP_CONNECT_RESP)e.Data;
  ...
 }
 else if(e.State==SMS_STATE.SP_DISCONNECT)
 {
  ...   
 }
 else if(e.State==SMS_STATE.DELIVER_ERROR)
 {
  ...  
 }
 else if(e.State==SMS_STATE.DELIVER_RESPONSE_ERROR)
 {
  ...   
 }
 else if(e.State==SMS_STATE.SUBMIT_ERROR)
 {
  ...   
 }
 else if(e.State==SMS_STATE.SUBMIT_RESPONSE_ERROR)
 {
  ...   
 }
 else if(e.State==SMS_STATE.ACTIVE_TEST_ERROR)
 {
  ...   
 }
 else if(e.State==SMS_STATE.ACTIVE_TEST_RESPONSE_ERROR)
 {
  ...   
 }
 else if(e.State==SMS_STATE.SP_CONNECT_ERROR)
 {
  ...   
 }
 else if(e.State==SMS_STATE.SP_DISCONNECT_ERROR)
 {
  ...   
 }
  
}

//异步事件回调函数
private void CMPPAsyncEventCallBack(IAsyncResult ar)
{
 SMSAsyncEvent ae = (SMSAsyncEvent)ar.AsyncState;
 ae.EndInvoke(ar);
}

//异步短消息发送
CMPPAsyncSubmit s = new CMPPAsyncSubmit(m_CMPP.Submit);
IAsyncResult ar=null;
string[] Destinations=new string[DestinationCount];
for(int i=0;i<DestinationCount;i++)
strDest[i]=Destination[i].ToString();
ar = s.BeginInvoke(Message,Destinations,Source,ServiceID,CODING.GBK,true,(byte)Tiray.SMS.FEE_USER_TYPE.DESTINATION,(byte)Tiray.SMS.FEE_TYPE.ONE,Fee,Source,LinkID,new AsyncCallback(CMPPAsyncSubmitCallBack),s);
...

//异步发送回调函数
private void CMPPAsyncSubmitCallBack(IAsyncResult ar)
{
 CMPPAsyncSubmit s = (CMPPAsyncSubmit) ar.AsyncState;
 s.EndInvoke(ar);
}

【完】

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.Net/C# 实现 中国移动 CMPP v3.0 ISMG SP 收发短信的 SP 客户端 (第2版)(CMPP SP Client) 增加了 CMPP Client 类本程序严格按 《中国移动通信企业标准》之《中国移动通信互联网短信网关接口协议(China Mobile Point to Point)》(版本号: 3.0.0) 即: CMPP v3.0.0 http://www.spzone.net/protocol/CMPPV3.0.rar 文档,实现了下面消息的定义及其相关协议级交互: 8.4 业务提供商 (SP) 与互联网短信网关 (ISMG) 间的消息定义 8 8.4.1 SP 请求连接到 ISMG(CMPP_CONNECT) 操作 8 8.4.1.1 CMPP_CONNECT 消息定义 (SP -> ISMG) 8 8.4.1.2 CMPP_CONNECT_RESP消息定义 (ISMG -> SP) 9 8.4.2 SP 或 ISMG 请求拆除连接 (CMPP_TERMINATE)操作 9 8.4.2.1 CMPP_TERMINATE 消息定义 (SP -> ISMG 或 ISMG -> SP) 9 8.4.2.2 CMPP_TERMINATE_RESP 消息定义 (SP -> ISMG 或 ISMG -> SP) 10 8.4.3 SP 向 ISMG提交短信 (CMPP_SUBMIT) 操作 10 8.4.3.1 CMPP_SUBMIT 消息定义 (SP -> ISMG) 10 8.4.3.2 CMPP_SUBMIT_RESP 消息定义 (ISMG -> SP) 11 8.4.5 ISMG 向 SP 送交短信 (CMPP_DELIVER) 操作 13 8.4.5.1 CMPP_DELIVER 消息定义 (ISMG -> SP) 13 8.4.5.2 CMPP_DELIVER_RESP 消息定义 (SP -> ISMG) 16 8.4.7 链路检测 (CMPP_ACTIVE_TEST) 操作 17 8.4.7.1 CMPP_ACTIVE_TEST定义 (SP -> ISMG 或 ISMG <- SP) 17 8.4.7.2 CMPP_ACTIVE_TEST_RESP定义 (SP -> ISMG 或 ISMG <- SP) 17 可采用《中国移动通信 CMPP v3.0 短消息网关模拟器 v1.10》进行测试: 下载于: 《北京风起水流软件工作室》 http://www.zealware.com/download/cmpp3smg.rar本程序以熟悉理解 CMPP 3.0 协议为主要目的,只将 "消息定义" 对象化,其相关协议级交互并未作更深层次的 OO! 也暂无任何错误处理程序! 消息定义的所有字段名称及其数据类型均与上述之 CMPP v3.0.0 文档完全一致! 其间参阅过 shanhe@CSDN or yexiong@cnBlogs 大作(在此鸣谢): http://blog.csdn.net/shanhe/archive/2004/07/19/45383.aspx http://cnblogs.com/yexiong/articles/115330.aspx 但其中有些消息定义字节错位,因此不能正常交互?!且对象化层次较高,不利于理解协议本身! 遂自己动手,丰衣足食,实现部分主要协议(SP 收发短信):

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值