2024年1月28日发(作者:)

#region Protected Methods protected UInt32 TimeStamp(DateTime dt) { string str=("{0:MMddhhmmss}",dt); return 32(str); } protected UInt32 CreateID() { UInt32 id=m_iSeqID; m_iSeqID++; if(m_iSeqID>ue) m_iSeqID=0; return id; } protected Byte[] CreateDigest(DateTime dt) { int iLength=25+m_; Byte[] btContent=new Byte[iLength]; (btContent,0,iLength); int iPos=0; foreach(char ch in m_strSPID) { btContent[iPos]=(Byte)ch; iPos++; } iPos+=9; foreach(char ch in m_strPassword) { btContent[iPos]=(Byte)ch; iPos++; } string strTimeStamp=("{0:MMddhhmmss}",dt); foreach(char ch in strTimeStamp) { btContent[iPos]=(Byte)ch; iPos++; } MD5 md5 = new MD5CryptoServiceProvider(); return eHash(btContent); } protected bool Close() { if(m_NetworkStream!=null) m_(); if(m_TcpClient!=null) m_();

m_TcpClient=null; m_NetworkStream=null; return true; }

protected bool Connect() { bool bOK=true; string strError=; CMPP_CONNECT_RESP resp=new CMPP_CONNECT_RESP(); try { m_TcpClient=new TcpClient(); m_eTimeout=m_meout=m_iTcpClientTimeout*1000; m_t(m_strAddress,m_iPort); m_NetworkStream=m_eam();

DateTime dt=; CMPP_CONNECT conn=new CMPP_CONNECT(); =new CMPP_HEAD(); dID=_CONNECT; ceID=CreateID(); Address=m_strSPID; amp=TimeStamp(dt); ticatorSource=CreateDigest(dt); n=CMPP_VERSION_30; Byte[] buffer=fer(); m_(buffer,0,(Int32)ength); int iSpan=0; bool bTimeOut=false; while(!m_ailable)//等待RESPONSE 5秒 { (10); iSpan++; if(iSpan>500) { bTimeOut=true; break; }

} if(!bTimeOut) { CMPP_HEAD Head=ReadHead(); if(dID==CMD_CONNECT_RESP) { resp=ReadConnectResp(Head); if(==0) bOK=true; else { bOK=false; strError="未正确接收CONNECT_RESP"; } } } else

{ bOK=false; strError="等待CONNECT_RESP超时"; } } catch(Exception e) { strError=e; bOK=false; } if(bOK) RaiseEvent(SMS__CONNECT,resp); else RaiseEvent(SMS__CONNECT_ERROR,strError); return bOK;

} protected bool Disconnect() { bool bOK=true; string strError=; try { DateTime dt=; CMPP_HEAD Head=new CMPP_HEAD(); dID=_TERMINATE; ceID=CreateID(); ength=(UInt32)(Head); Byte[] buffer=fer(); m_(buffer,0,(Int32)ength); int iSpan=0; bool bTimeOut=false; while(!m_ailable)//等待RESPONSE 5秒 { (10); iSpan++; if(iSpan>500) { bTimeOut=true; break; } } if(!bTimeOut) { Head=ReadHead(); if(dID==CMD_TERMINATE_RESP) bOK=true; else { bOK=false; strError="未正确接收TERMINATE_RESP"; } } else { bOK=false; strError="等待TERMINATE_RESP超时"; }

} catch (Exception ex) { bOK=false; strError=e; } if(m_NetworkStream!=null) m_(); if(m_TcpClient!=null) m_(); m_TcpClient=null; m_NetworkStream=null; if(bOK) RaiseEvent(SMS__DISCONNECT,null); else RaiseEvent(SMS__DISCONNECT_ERROR,strError);

return bOK; } protected bool Send(DATA_PACKAGE dp) { bool bOK=true; string strError=; SMS_STATE state=SMS__ERROR; try { (m_iSendSpan); Byte[] btData=null; if(d==CMD_ACTIVE_TEST) { btData=((CMPP_HEAD)).GetBuffer(); state=SMS__TEST; } else if(d==CMD_ACTIVE_TEST_RESP) { btData=((CMPP_ACTIVE_TEST_RESP)).GetBuffer(); state=SMS__TEST_RESPONSE; } else if(d==CMD_DELIVER_RESP) { btData=((CMPP_DELIVER_RESP)).GetBuffer(); state=SMS_R_RESPONSE; } else if(d==CMD_SUBMIT) { btData=((CMPP_SUBMIT)).GetBuffer(); state=SMS_; } m_(btData,0,); m_dtLastTransferTime=; } catch(Exception ex) {

bOK=false; strError=e; } if(bOK) { RaiseEvent(state,); } else { if(state==SMS__TEST) state=SMS__TEST_ERROR; else if(state==SMS__TEST_RESPONSE) state=SMS__TEST_RESPONSE_ERROR; else if(state==SMS_R_RESPONSE) state=SMS_R_RESPONSE_ERROR; else if(state==SMS_) state=SMS__ERROR;

RaiseEvent(state,strError); } return bOK; }