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

📄 vc

📁 关于中国移动网关的
💻
字号:
你好,以下是我写的
connect:
ret=m_cmppsock->Cmpp_Connect(ip,7890,"sisco",PassWnd,0);建立mo连接 0-mo
ret=m_cmppsock->Cmpp_Connect(ip,7890,"sisco",PassWnd,1);建立mt连接 1-mt
//
int CMyCMPPSocket::Cmpp_Connect(char *ismg_ip, short port, char *username, CStri
ng password,int contype)
{
	struct message *CmppData=new MESG;
	memset(CmppData,0,sizeof(MESG));
	u_char *pSndbuf=new u_char(42);
	if(!Create(0,SOCK_STREAM))
		return ERROR_SOCKET_CREATE;
	if(!Connect(ismg_ip,port))
		return ERROR_CONNECT;

	bConnected=TRUE;
//填充消息头数据
	CmppData->head.total_length=htonl(Head_Len+Connect_Len);
	CmppData->head.command_id=htonl(CMPP_Connect);
	CmppData->head.sequence_id=htonl(++sequence_id);
	
//填充消息体
	sprintf(CmppData->body.connect.source_addr,username);
	MD5_CTX md5T;  //0115
	unsigned char digest[16];  //0115
	char buf[16];
	//0115
	result=strcmp(ismg_ip,"211.136.91.228");
	if(result==0)
	{
	unsigned char* pCur;
	unsigned char sTmp[50];
	//认证码生成
	//1.源地址
	memset(sTmp,0,sizeof(sTmp));
    pCur=sTmp;
	//unsigned char source_addr[6];
	//memcpy(source_addr,"905555",6);
	sprintf(CmppData->body.connect.source_addr,"901106");
	memcpy(pCur,CmppData->body.connect.source_addr,6);
	pCur+=6;
	pCur+=9;
	//2.密码
	//CString PassWnd;
	//PassWnd="ICP";
    //memcpy(pCur,(LPSTR)(LPCSTR)PassWnd,PassWnd.GetLength());
	memcpy(pCur,password,password.GetLength());
	pCur+=password.GetLength();
    //3.时间戳
	CString sTime;
    sTime="0000000000";
	memcpy(pCur,(LPSTR)(LPCSTR)sTime,sTime.GetLength());
	pCur+=10;
	//生成MD5码
	//unsigned char digest[16];
    md5T.MD5Update ((unsigned char*)sTmp, 25+password.GetLength());
	md5T.MD5Final (digest);
	CmppData->body.connect.version=contype;
	sprintf(CmppData->body.connect.timestamp,"%c%c%c%c",\
		0x00,0x00,0x00,0x00);
	}
	//
	//
	memcpy(CmppData->body.connect.authenticatorICP,digest,16);
	//CmppData->body.connect.version=1;

//发送消息
	if(Send(CmppData,Head_Len+Connect_Len)==SOCKET_ERROR)
	{
		delete CmppData;
		return ERROR_WRITE;
	}
	else
	{
		delete CmppData;
		return ERROR_OK;
	}
}

submit:
	int i=0; 
	struct message *CmppData=new MESG;
	memset(CmppData,0,sizeof(MESG));
//填充消息头
	CmppData->head.command_id=htonl(CMPP_Submit);
	CmppData->head.sequence_id=htonl(++sequence_id);
//填充消息体

	u_long time;
    u_long id;

	time=htonl(GetTime(4));
	memcpy(CmppData->body.submit.msgID,&time,4);
	id=htonl(msg_id);
	memcpy(CmppData->body.submit.msgID+4,&id,4);

	CmppData->body.submit.pk_total=pk_total;
	CmppData->body.submit.pk_number=pk_number;
	CmppData->body.submit.reg_deliver=registered_delivery;
	CmppData->body.submit.msgLevel=msg_level;
	sprintf(CmppData->body.submit.serviceID,service_id);
//	CmppData->body.submit.fee_user_type=fee_user_type;
	CmppData->body.submit.fee_user_type='\0';
	sprintf(CmppData->body.submit.fee_terminalID,"\0");
	//sprintf(CmppData->body.submit.fee_terminalID,src_terminal_id);
	if(msg_fmt==4)
	{
		CmppData->body.submit.tpUdhi=64;
	}
	else
	{
		CmppData->body.submit.tpUdhi=0;
	}
	CmppData->body.submit.tpPid=0;
	CmppData->body.submit.msgFmt=msg_fmt;
	sprintf(CmppData->body.submit.msgSrc,msg_src);
	sprintf(CmppData->body.submit.FeeType,feetype);
	sprintf(CmppData->body.submit.FeeCode,feecode);
	sprintf(CmppData->body.submit.valid_time,valid_time);
	sprintf(CmppData->body.submit.at_time,at_time);
	sprintf(CmppData->body.submit.src_terminalID,src_terminal_id);


//设定目的手机号码,以逗号分开
	CString str_dest_terminal_id;
	str_dest_terminal_id.Format("%s",dest_terminal_id);
	char *mobile;
	mobile=strtok(dest_terminal_id,", ");
	while(mobile!=NULL)
	{
		sprintf(&CmppData->body.submit.MoreInfo[21*i++],mobile);
		mobile=strtok(NULL,", ");
	}
	CmppData->head.total_length=htonl(Head_Len+116+21*i+1+msg_length+9);
	CmppData->body.submit.DestUser_tl=i;
	
	sprintf(&CmppData->body.submit.MoreInfo[21*i],"%c",msg_length);
	memcpy(&CmppData->body.submit.MoreInfo[21*i+1],msg_content,msg_length);

	if(Send(CmppData,Head_Len+116+21*i+1+msg_length+9)==SOCKET_ERROR)
	{
		delete CmppData;
		return ERROR_WRITE;
	}
	else
	{
		//xMessageBox(dest_terminal_id);
		m_icp->WriteLogS(CmppData,msg_src,feetype,feecode,str_dest_terminal_id.GetBuff
er(str_dest_terminal_id.GetLength()),msg_length,msg_content);
		delete CmppData;
		return ERROR_OK;
	}
希望对你有用

⌨️ 快捷键说明

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