📄 mtsocket.cpp
字号:
memcpy(pBuf+156,Content.GetBuffer(Content.GetLength()),Content.GetLength());
memcpy(pBuf+156+Content.GetLength(),LinkID.GetBuffer(8),8);
return SendToIsmg(pBuf,SendLen);
}
//Submit下"群发"短消息
BOOL CMtSocket::SgipMultiSubmit(CString SrcTerminateID, CString DestTerminateID, CString FeeTerminateID, CString FeeType, CString FeeCode, CString Content, CString ServiceID, CString SPID, int &MsgFmt,CString MotoMtFlag,CString RegistDeliver)
{
int SendLen =0;
SGIP_Submit SgipSubmit;
memset(&SgipSubmit,0,sizeof(SgipSubmit));
SGIP_MultiSubmit MultiSubmit;
memset(&MultiSubmit,0,sizeof(MultiSubmit));
//
CString strMultipleMobile = "";
CString strMsgContent = "8";
//unsigned char szMultiChargeNumber [2100] = {0};
unsigned char szMultiChargeNumber [2100] = {0};
int nUserCount = 0;
int nMsgLen = 0;
GetMultiChargeNumberAndContent(DestTerminateID,Content,szMultiChargeNumber,nUserCount,strMsgContent,nMsgLen);
if(( strMsgContent == "" ) || ( nUserCount < 1 ) || (nMsgLen == 0)) return TRUE; //写日
char m_SendBuf[2000];// = {'\0'};
memset(m_SendBuf,0,sizeof(m_SendBuf));
char* pBuf=m_SendBuf;
//SgipSubmit.m_SGIPHead
SendLen=63+nUserCount*21+72+nMsgLen+8;
SgipSubmit.m_SGIPHead.Message_Length=htonl(SendLen);
SgipSubmit.m_SGIPHead.Command_ID=htonl(SGIP_SUBMIT);
ProduceSequenceNum(SgipSubmit.m_SGIPHead.Sequence_Number);
memcpy(pBuf,&SgipSubmit.m_SGIPHead,sizeof(SgipSubmit.m_SGIPHead));
SendLen = sizeof(SgipSubmit.m_SGIPHead);
//SgipSubmit.SPNumber
memcpy(pBuf+SendLen,(LPCTSTR)SrcTerminateID,SrcTerminateID.GetLength());
SendLen += sizeof(SgipSubmit.SPNumber);
//SgipSubmit.ChargeNumber
memset(pBuf+SendLen,0,sizeof(SgipSubmit.ChargeNumber));
SendLen +=sizeof(SgipSubmit.ChargeNumber);
//SgipSubmit.UserCount
pBuf[SendLen] = nUserCount;
SendLen += 1;
//SgipSubmit.UseNumber
memcpy(pBuf+SendLen,szMultiChargeNumber,nUserCount * 21);
SendLen += nUserCount * 21;
//企业代码
memcpy(MultiSubmit.CorpId, SPID.GetBuffer(SPID.GetLength()),SPID.GetLength());
memcpy(MultiSubmit.ServiceType,ServiceID.GetBuffer(ServiceID.GetLength()),ServiceID.GetLength());
int iFeetype=atoi(FeeType);
MultiSubmit.FeeType=(char)iFeetype;
memcpy(MultiSubmit.FeeValue,FeeCode.GetBuffer(FeeCode.GetLength()),FeeCode.GetLength());
//无GivenValue
//AgentFlag=0
//Priority=0
//ExpireTime
//ScheduleTime
MultiSubmit.ReportFlag=atoi(RegistDeliver);
MultiSubmit.MorelatetoMTFlag=atoi(MotoMtFlag);
//MultiSubmit.MorelatetoMTFlag=2;
//Tp_pid
//TP_udhi
MultiSubmit.MessageCoding=(char)MsgFmt;
//MessageType=0
MultiSubmit.MessageLength=htonl(strMsgContent.GetLength());
memcpy(pBuf+SendLen,&MultiSubmit,sizeof(MultiSubmit));
SendLen+=sizeof(MultiSubmit);
memcpy(pBuf+SendLen,(LPCTSTR)strMsgContent,strMsgContent.GetLength());
SendLen+=strMsgContent.GetLength();
//char *LinkID=new char[8];
CString LinkID="";
//memset(LinkID,0,8);
//memset(pBuf+SendLen,0,8);
memcpy(pBuf+SendLen,LinkID.GetBuffer(8),8);
SendLen+=8;
CString ChargeNum=szMultiChargeNumber;
return SendToIsmg(pBuf,SendLen);
}
//取群发手机和发送消息
void CMtSocket::GetMultiChargeNumberAndContent(CString &DestTerm,CString OldContent,unsigned char *MultiChargeNumber,int &UserCount,CString &MsgContent,int &MsgLen)
{
int iMoreSendNum = 0,i = 0;
int iMoreSendLen = 0; //手机号占消息体的长度
unsigned char szChargeNumber[21] = {'\0'};
int iChargeNumLen = 0;
char szContent[2000] = {'\0'};
int nPos=OldContent.FindOneOf(":");
CString phone=OldContent.Left(nPos);
memcpy(szContent,(LPCTSTR)phone,sizeof(szContent));
iMoreSendNum = atoi(DestTerm);
if( iMoreSendNum > 99 )
{
iMoreSendNum = 99;
}
char seps[] = ",";
char *token = NULL;
token = strtok( szContent, seps );
while( token != NULL )
{
i++;
if ( i > iMoreSendNum ) break;
memset(szChargeNumber,0,sizeof(szChargeNumber));
szChargeNumber[0] = '8';
szChargeNumber[1] = '6';
memcpy(szChargeNumber + 2,token,strlen(token));
iMoreSendLen += strlen(token);
if (iChargeNumLen == 0)
memcpy(MultiChargeNumber,szChargeNumber,strlen((char*)szChargeNumber));
else
memcpy(MultiChargeNumber+iChargeNumLen,szChargeNumber,strlen((char*)szChargeNumber));
iChargeNumLen += sizeof(szChargeNumber);
token = strtok( NULL, seps );
}
//实际手机号数
UserCount = i;
//减1表示去掉冒号 消息体内容格式:手机号1,手机号2,...:内容
MsgContent = OldContent.Mid(nPos+1);
MsgLen = MsgContent.GetLength();
}
//发送包月的SMC话单
BOOL CMtSocket::SgipSubmitSMC(CString SrcTerminateID, CString DestTerminateID,
CString FeeTerminateID, CString FeeType, CString FeeCode,
CString Content, CString ServiceID, CString SPID, int &MsgFmt)
{
int SendLen=156+Content.GetLength()+8;
SGIP_Submit SgipSubmit;
memset(&SgipSubmit,0,sizeof(SgipSubmit));
SgipSubmit.m_SGIPHead.Message_Length=htonl(SendLen);
SgipSubmit.m_SGIPHead.Command_ID=htonl(SGIP_SUBMIT);
ProduceSequenceNum(SgipSubmit.m_SGIPHead.Sequence_Number);
//得到特服号
memcpy(SgipSubmit.SPNumber,SrcTerminateID.GetBuffer(SrcTerminateID.GetLength()),SrcTerminateID.GetLength());
//付费手机,前加86
SgipSubmit.ChargeNumber[0]='8';
SgipSubmit.ChargeNumber[1]='6';
memcpy(&(SgipSubmit.ChargeNumber[2]),FeeTerminateID.GetBuffer(FeeTerminateID.GetLength()),FeeTerminateID.GetLength());
//接受短信用户数
SgipSubmit.UserCount=1;
SgipSubmit.UserNumber[0]='8';
SgipSubmit.UserNumber[1]='6';
memcpy(&(SgipSubmit.UserNumber[2]),DestTerminateID.GetBuffer(DestTerminateID.GetLength()),DestTerminateID.GetLength());
//企业代码
memcpy(SgipSubmit.CorpId, SPID.GetBuffer(SPID.GetLength()),SPID.GetLength());
memcpy(SgipSubmit.ServiceType,ServiceID.GetBuffer(ServiceID.GetLength()),ServiceID.GetLength());
//int iFeetype=atoi(FeeType);
//SgipSubmit.FeeType=(char)iFeetype;
SgipSubmit.FeeType=3;
memcpy(SgipSubmit.FeeValue,FeeCode.GetBuffer(FeeCode.GetLength()),FeeCode.GetLength());
//无GivenValue
//AgentFlag=0
SgipSubmit.MorelatetoMTFlag=3;
//Priority=0
//ExpireTime
//ScheduleTime
SgipSubmit.ReportFlag=3;//SMC包月话单
//Tp_pid
//TP_udhi
SgipSubmit.MessageCoding=(char)MsgFmt;
//MessageType=0
SgipSubmit.MessageLength=htonl(Content.GetLength());
char* pBuf=m_SendBuf;
memcpy(pBuf,&SgipSubmit,156);
memcpy(pBuf+156,Content.GetBuffer(Content.GetLength()),Content.GetLength());
memset(pBuf+156+Content.GetLength(),0,8);
return SendToIsmg(pBuf,SendLen);
}
//发送赠送话单
BOOL CMtSocket::SgipSubmitGivenMoney(CString SrcTerminateID, CString DestTerminateID, CString FeeTerminateID, CString FeeType, CString FeeCode, CString Content, CString ServiceID, CString SPID, int &MsgFmt, CString &GivenValue)
{
int SendLen=156+Content.GetLength()+8;
SGIP_Submit SgipSubmit;
memset(&SgipSubmit,0,sizeof(SgipSubmit));
SgipSubmit.m_SGIPHead.Message_Length=htonl(SendLen);
SgipSubmit.m_SGIPHead.Command_ID=htonl(SGIP_SUBMIT);
ProduceSequenceNum(SgipSubmit.m_SGIPHead.Sequence_Number);
//得到特服号
memcpy(SgipSubmit.SPNumber,SrcTerminateID.GetBuffer(SrcTerminateID.GetLength()),SrcTerminateID.GetLength());
//付费手机,前加86
SgipSubmit.ChargeNumber[0]='8';
SgipSubmit.ChargeNumber[1]='6';
memcpy(&(SgipSubmit.ChargeNumber[2]),FeeTerminateID.GetBuffer(FeeTerminateID.GetLength()),FeeTerminateID.GetLength());
//接受短信用户数
SgipSubmit.UserCount=1;
SgipSubmit.UserNumber[0]='8';
SgipSubmit.UserNumber[1]='6';
memcpy(&(SgipSubmit.UserNumber[2]),DestTerminateID.GetBuffer(DestTerminateID.GetLength()),DestTerminateID.GetLength());
//企业代码
memcpy(SgipSubmit.CorpId, SPID.GetBuffer(SPID.GetLength()),SPID.GetLength());
memcpy(SgipSubmit.ServiceType,ServiceID.GetBuffer(ServiceID.GetLength()),ServiceID.GetLength());
int iFeetype=atoi(FeeType);
SgipSubmit.FeeType=(char)iFeetype;
memcpy(SgipSubmit.FeeValue,FeeCode.GetBuffer(FeeCode.GetLength()),FeeCode.GetLength());
//GivenValue
memcpy(SgipSubmit.GivenValue ,GivenValue.GetBuffer(GivenValue.GetLength()),GivenValue.GetLength());
//AgentFlag=0
//Priority=0
//ExpireTime
//ScheduleTime
SgipSubmit.ReportFlag=1;
//Tp_pid
//TP_udhi
SgipSubmit.MessageCoding=(char)MsgFmt;
//MessageType=0
SgipSubmit.MessageLength=htonl(Content.GetLength());
char* pBuf=m_SendBuf;
memcpy(pBuf,&SgipSubmit,156);
memcpy(pBuf+156,Content.GetBuffer(Content.GetLength()),Content.GetLength());
memset(pBuf+156+Content.GetLength(),0,8);
return SendToIsmg(pBuf,SendLen);
}
BOOL CMtSocket::SgipSendBinary(CString SrcTerminateID, CString DestTerminateID, CString FeeTerminateID, BYTE User_Fee_Type, CString FeeType, CString FeeCode, BYTE *ContentBuf, int ContentLength, CString ServiceID, CString SPID, int &MsgFmt, int &Tppid, int &Tpudhi,CString LinkID)
{
int SendLen=156+ContentLength+8;
SGIP_Submit SgipSubmit;
memset(&SgipSubmit,0,sizeof(SgipSubmit));
SgipSubmit.m_SGIPHead.Message_Length=htonl(SendLen);
SgipSubmit.m_SGIPHead.Command_ID=htonl(SGIP_SUBMIT);
ProduceSequenceNum(SgipSubmit.m_SGIPHead.Sequence_Number);
//得到特服号
CString TmpStr="000000000000000000000";
memcpy(SgipSubmit.SPNumber,SrcTerminateID.GetBuffer(SrcTerminateID.GetLength()),SrcTerminateID.GetLength());
if (ServiceID!="ERROR"){
SgipSubmit.ChargeNumber[0]='8';
SgipSubmit.ChargeNumber[1]='6';
memcpy(&(SgipSubmit.ChargeNumber[2]),FeeTerminateID.GetBuffer(FeeTerminateID.GetLength()),FeeTerminateID.GetLength());
}
else{ //serviceid不是ERROR的,付费手机,前加86
memcpy(&(SgipSubmit.ChargeNumber[0]),TmpStr.GetBuffer(TmpStr.GetLength()),21);
}
/*SgipSubmit.ChargeNumber[0]='8';
SgipSubmit.ChargeNumber[1]='6';
memcpy(&(SgipSubmit.ChargeNumber[2]),FeeTerminateID.GetBuffer(FeeTerminateID.GetLength()),FeeTerminateID.GetLength());
*/
//接受短信用户数
SgipSubmit.UserCount=1;
SgipSubmit.UserNumber[0]='8';
SgipSubmit.UserNumber[1]='6';
memcpy(&(SgipSubmit.UserNumber[2]),DestTerminateID.GetBuffer(DestTerminateID.GetLength()),DestTerminateID.GetLength());
//企业代码
memcpy(SgipSubmit.CorpId, SPID.GetBuffer(SPID.GetLength()),SPID.GetLength());
memcpy(SgipSubmit.ServiceType,ServiceID.GetBuffer(ServiceID.GetLength()),ServiceID.GetLength());
int iFeetype=atoi(FeeType);
SgipSubmit.FeeType=(char)iFeetype;
memcpy(SgipSubmit.FeeValue,FeeCode.GetBuffer(FeeCode.GetLength()),FeeCode.GetLength());
//无GivenValue
//AgentFlag=0
//Priority=0
//ExpireTime
//ScheduleTime
SgipSubmit.ReportFlag=1;
//Tp_pid
//TP_udhi
SgipSubmit.TP_pid=Tppid;
SgipSubmit.TP_udhi =Tpudhi;
SgipSubmit.MessageCoding=(char)MsgFmt;
//MessageType=0
SgipSubmit.MessageLength=htonl(ContentLength);
char* pBuf=m_SendBuf;
memcpy(pBuf,&SgipSubmit,156);
memcpy(pBuf+156,ContentBuf,ContentLength);
memcpy(pBuf+156+ContentLength,LinkID.GetBuffer(8),8);
return SendToIsmg(pBuf,SendLen);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -