📄 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 + -