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

📄 operator.cpp

📁 一个支持EMPP协议的企信通程序,很完整可以马上用,完全socket底层协议编写,不用移动提供的API
💻 CPP
字号:
// Operator.cpp: implementation of the COperator class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Operator.h"


#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
char * ConvertToSingle(char * strDest, CString strSource, int length)
{
	int i;
	
	for( i=0; i<length; i++)
	{
		strDest[i] = (char)strtol("0x"+strSource.Mid(i*2, 2), NULL,16);
	}
	return strDest;
}


CString ConvertToString(BYTE * strSource, int length)
{
	CString strDest;
	char strTemp[3];
	int  i, x;
	
	strDest.Empty();
	for( i=0; i<length; i++)
	{
		x = (int)strSource[i];
		if( x<16 )
		{
			strTemp[0]='0';
			itoa(x, strTemp+1, 16);
		}
		else
			itoa(x, strTemp, 16);
		strDest+=strTemp;
	}
	strDest.MakeUpper();
	return strDest;
}
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

COperator::COperator(BYTE _telcomid,BYTE _protocol)
{
	telcomid=_telcomid;
	protocol=_protocol;

	
	m_mtthread=GetPrivateProfileInt("Operator","mtthread",1,CONFIGFILE);
	if(m_mtthread>10) m_mtthread=10;
	m_mothread=GetPrivateProfileInt("Operator","mothread",0,CONFIGFILE);
	if(m_mothread>10) m_mothread=10;
	
}

COperator::~COperator()
{
}

void COperator::LoadSetting()
{	
	GetPrivateProfileString("Operator","spnumber","555500961",spnumber,20,CONFIGFILE);
	GetPrivateProfileString("Operator","username","555500961",uid,20,CONFIGFILE);
	GetPrivateProfileString("Operator","passwd","123456",pwd,20,CONFIGFILE);
	GetPrivateProfileString("Operator","host","",host,20,CONFIGFILE);
	port=GetPrivateProfileInt("Operator","port",9999,CONFIGFILE);
}

void COperator::InitOperator()
{

}

int COperator::Submit(CString content, CString mobile,CString srcid,CString svrid,char* gmsgid,unsigned long* gstate)
{
	return 0;
}

BOOL COperator::WriteResultLog(
								   unsigned long  mtid, 
								   int entid,
								   BYTE msgformat,
								   BYTE reportflag,
								   BYTE moflag,
								   BYTE tppid,
								   BYTE tpudhi,
								   char * destAddr,
								   BYTE destAddrType,
								   char * serviceID,
								   BYTE feeUserType,
								   BYTE feeType,
								   long feeCode,
								   char * chargeNumber,
								   BYTE chargeNumberType,
								   char * sendtime,
								   char * expiretime,
								   char * Srcterminal,
								   long msglength,
								   char * msgcontent,	
								   char * messageid,
								   int errorcode,
								   int feedback,
								   BYTE TelcomID,
								   unsigned char* reserved)
{
	CString strInsert;
	CString strMsg;
	CString Reserved;
	CString strdestAddr;
	CString strchargeNumber;
	if(destAddrType==1)
	{
		strdestAddr=ConvertToString((BYTE*)destAddr,32);
	}else
	{
		strdestAddr.Format("%s",destAddr);
	}
	if(chargeNumberType==1)
	{
		strchargeNumber=ConvertToString((BYTE*)chargeNumber,32);
	}else
	{
		strchargeNumber.Format("%s",chargeNumber);
	}
	strMsg="0X"+ConvertToString((BYTE*)msgcontent,msglength);
	Reserved=ConvertToString(reserved,20);
	strInsert.Format("INSERT INTO MT_ResultLog(MT_ID,Ent_ID,MsgFormat,ReportFlag,MOFlag,TpPID,TpUDHI,DestAddr,DestAddrType,ServiceID,FeeUserType,FeeType,FeeCode,ChargeNumber,ChargeNumberType,SendTime,ExpireTime,Srcterminal,MsgLength,MsgContent,MessageID,ErrorCode,FeedBack,TelcomID,Reserved) VALUES(%u,%u,%u,%u,%u,%u,%u,'%s',%u,'%s',%u,%u,%u,'%s',%u,'%s','%s','%s',%u,%s,'%s',%d,%d,%u,'%s')",mtid,entid,msgformat,reportflag,moflag,tppid,tpudhi,strdestAddr,destAddrType,serviceID,feeUserType,feeType,feeCode,strchargeNumber,chargeNumberType,sendtime,expiretime,Srcterminal,msglength,strMsg,messageid,errorcode,feedback,TelcomID,Reserved);
	return TRUE;
}

void COperator::WriteMOLog()
{
	/*
	CString strEXE;
	CString strHex;
	CString Reserved;
	CString strsrcid;
	strHex="0X"+ConvertToString((BYTE*)body->pMsg,body->msglength);
	Reserved=ConvertToString((BYTE*)body->reserved,20);
	if(body->SrcTerminalIDType==1)
	{
		strsrcid=ConvertToString((BYTE*)body->srcterminal,32);
	}else
	{
		strsrcid.Format("%s",body->srcterminal);
	}
	strEXE.Format("INSERT INTO MO_LOG(MO_ID,TelcomID,OrgAddr,OrgAddrType,DestAddr,MsgFormat,Content,TP_PID,TP_UDHI,Message_ID,RecvTime,Reserved) VALUES(%u,%u,'%s',%u,'%s',%u,%s,%u,%u,'%s','%s','%s')",body->MO_ID,body->telcomid,strsrcid,body->SrcTerminalIDType,body->destterminal,body->msgformat,strHex,body->tpPID,body->tpUDHI,messageid,body->recvtime,Reserved);
	*/
	
}
void COperator::WriteReportLog()
{
	/*
	CString strdestid;
	CString strEXE;
	if(body->Dest_terminal_Id_Type==1)
	{
		strdestid=ConvertToString((BYTE*)body->dest_terminal_id,32);
	}else
	{
		strdestid.Format("%s",body->dest_terminal_id);
	}
	strEXE.Format("INSERT INTO MT_ReportLog(Report_ID,TelcomID,DestTermID,DestTermIDType,MessageID,State,ErrorCode,RecvTime,SubTime,DoneTime) VALUES(%u,%u,'%s',%u,'%s',%u,%u,'%s','%s','%s')",body->report_id,body->telcomid,strdestid,body->Dest_terminal_Id_Type,messageid,body->stat,body->ErrorCode,body->recvtime,body->subtime,body->donetime);
	*/
}

void COperator::StartMoRecv()
{
}

void COperator::StopMoRecv()
{
}

void COperator::HandleMo()
{
	
	/*
	CString m_telcomid="";
	m_telcomid.Format("%u",telcomid);
	int tlen=m_telcomid.GetLength();
	char* strmsg=new char[body->CMPP_Deliver.msglength+tlen+1];
	memset(strmsg,0,body->CMPP_Deliver.msglength+tlen+1);
	memcpy(strmsg,body->CMPP_Deliver.pMsg,body->CMPP_Deliver.msglength);
	memcpy(strmsg+body->CMPP_Deliver.msglength,(char*)(LPCTSTR)m_telcomid,tlen);
	if((strcmp(body->CMPP_Deliver.destterminal,spnumber)==0))
	{
		CString momsg;
		momsg.Format("%s",strmsg);
		momsg.MakeLower();
		char* uid=m_mc->GetCmd(momsg);
		if(uid)
			strcat(body->CMPP_Deliver.destterminal,uid);
		else
		{
			momsg=momsg.Left(momsg.GetLength()-tlen);
			uid=m_mc->GetMhCmd(momsg,0);
			if(uid)
				strcat(body->CMPP_Deliver.destterminal,uid);
			else
			{
				momsg.Format("*%s",m_telcomid);
				uid=m_mc->GetCmd(momsg);
				if(uid)
					strcat(body->CMPP_Deliver.destterminal,uid);
			}
		}
	}
	delete[] strmsg;
	WriteMOLog(&(body->CMPP_Deliver),msgid);
	char aip[16];
	memset(aip,0,16);
	int ent_id=m_mc->GetEntidFromNumber(body->CMPP_Deliver.destterminal+strlen(spnumber),aip);
	if(ent_id>0)
	{
		MoObject* _obj=new MoObject;
		_obj->ent_id=ent_id;
		time(&_obj->acttime);
		time(&_obj->recvtime);
		_obj->isReport=0;
		strcpy(_obj->ip,aip);
		_obj->state=0;
		_obj->body=new CMPP_MsgBody;
		memcpy(_obj->body,body,sizeof(CMPP_MsgBody));
		m_mc->AddToMoList(_obj);
	}
	*/
}

void COperator::HandleRp()
{
/*
	WriteReportLog(&(body->CMPP_Report),msgid);
	char aip[16];
	memset(aip,0,16);
	long mt_id;
	int ent_id=m_mc->GetEntidFromMsgid(msgid,body->CMPP_Report.telcomid,mt_id,aip);
	if(ent_id>0)
	{
		MoObject* _obj=new MoObject;
		_obj->ent_id=ent_id;
		time(&_obj->acttime);
		time(&_obj->recvtime);
		_obj->isReport=1;
		strcpy(_obj->ip,aip);
		_obj->state=0;
		_obj->body=new CMPP_MsgBody;
		memcpy(_obj->body,body,sizeof(CMPP_MsgBody));
		_obj->body->CMPP_Report.mt_id=mt_id;
		m_mc->AddToMoList(_obj);
	}
	*/

}

char* COperator::FindStr(char *src, char* obj,int len)
{
	for(int i=0;i<len-strlen(obj)+1;i++)
	{
		if(strncmp(src+i,obj,strlen(obj))==0)
		{
			return src+i+strlen(obj);
		}
	}
	return NULL;
}

CString COperator::GenStrTime()
{
	CTime t=CTime::GetCurrentTime();
	return t.Format("%Y%m%d%H%M%S");
}

CString COperator::ParserCmppMsgid(char *MsgId)
{
	return "";
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -