⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mtsocket.cpp

📁 一个手机通信的源代码 一个手机通信的源代码一个手机通信的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
  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 + -