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

转载 2006年06月07日 09:10:00
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);
}

【完】

cmpp2.0如何实现网关短信发送

最近在工作中,遇到了客户需要根据移动公司的提供的网关来进行短信的开发,具体是根据CMPP2.0协议进行开发的,还是比较复杂,在网上找了很多程序,都不太好使,最后找了一个,然后根据具体情况进行了调整后,...
  • hys21
  • hys21
  • 2016年08月19日 16:31
  • 967

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

.Net/C# 实现 中国移动 CMPP v3.0 ISMG <-> SP 收发短信的 SP 客户端 (CMPP SP Client)

/*  .Net/C# 实现 中国移动 CMPP v3.0 ISMG SP 收发短信的 SP 客户端 (CMPP SP Client)  本程序严格按  《中国移动通信企业标准》之《中国移动通...
  • my98800
  • my98800
  • 2016年04月05日 08:34
  • 1132

CMPP SP端 C# 实例

//附CMPPClient.cs:/*作者:TNT 时间:2003年12月文件说明:本文件实现SP端的协议开发。*/using System;using System.Security.Cryptog...
  • shanhe
  • shanhe
  • 2004年07月19日 23:03
  • 16657

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

长短信实现系列之移动CMPP2.0

1)背景目前我们的短信发送基本上就是超过140字节(甚至更少)就切分(移动普通短信超过140个字节甚至都发送不了,联通倒是可以),然后分几条发给客户,而且也不能保证顺序,用户体验不好,运营这边抱怨说精...
  • pwlazy
  • pwlazy
  • 2010年03月05日 15:44
  • 25743

中国移动短信网关CMPP3.0 C#源代码:数据包定义

关于联合CMPP定义的各种数据包采用C语言中的联合(Union)来处理是最有效率的,因为接收和发送的是一个字节数组,使用联合可以方便地在字节数组和数据包结构之间转换。C#本身并不支持联合,但可以使用P...

中国移动短信网关CMPP3.0

  • 2010年02月03日 15:25
  • 882KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:中国移动短信网关CMPP3.0 C#源代码:使用示例
举报原因:
原因补充:

(最多只允许输入30个字)