📄 _emspsender.cpp
字号:
#include "stdafx.h"
#include ".\_emspsender.h"
#include "net_protocal.h"
#include "_MSG_Head.h"
#include "_MB_SUBMIT.h"
#include "_MB_SUBMIT_RESP.h"
#include "EMSP_ERROR.h"
using namespace EMSP2_0;
using namespace std;
C_EMSPSender::C_EMSPSender(void)
{
}
C_EMSPSender::~C_EMSPSender(void)
{
}
bool EMSP2_0::C_EMSPSender::SendMsg(string called,string caller, string Content)
{
return SendMsg(called,caller,Content,"");
}
bool EMSP2_0::C_EMSPSender::SendMsg(string called,string caller, string Content, string scheduleTime)
{ MB_SUBMIT mb=GetSubmit();
mb.Called=called;
mb.ReportFlag=1;
mb.Caller=caller;
mb.chargeNumber=caller;
if(scheduleTime.size()>0)
{
mb.SendType=1 ;
mb.ScheduleTime=scheduleTime;
}else
{
mb.SendType=0;
}
mb.MsgLen=Content.size();
int size=140;
if(size>Content.size())
{
size=Content.size();
}
for(int i=0;i<size;i++)
{
mb.MsgContent[i]=Content[i];
}
MsgHead mh;
FillHead(&mh,C_SUBMIT);
C_MB_SUBMIT mbobj(mb);
char* mbbuff=mbobj.getBytes();
size=mbobj.getSize();
mh.Total_length=size+13 ;
C_MSG_Head mhobj(mh);
char* mhbuff=mhobj.getBytes();
SendBuff((void*)mhbuff,13);
SendBuff((void*)mbbuff,size);
char buf[13];
if(ReceiveBuf((void*)buf,13))
{
mhobj.TransFromchars(buf,13);
if(mhobj.value()->Command_ID==C_SUBMIT_RESP)
{
int rsize=mhobj.value()->Total_length-13;
char* rbuf=new char[rsize];
if(ReceiveBuf((void*)rbuf,rsize))
{
C_MB_SUBMIT_RESP mbrobj;
mbrobj.TransFromchars(rbuf,rsize);
if(mbrobj.value()->Result==0)
{
return true;
}else
{
EMSP2_0::ShowError(mbrobj.value()->Result);
}
}
}
}
return false;
}
void EMSP2_0::C_EMSPSender::getSN(void)
{
}
MB_SUBMIT EMSP2_0::C_EMSPSender::GetSubmit(void)
{
MB_SUBMIT mb;
mb.SessionID=m_SessionID;
mb.ClientSeq1=time(NULL);
mb.ClientSeq2=0;
mb.MsgCoding=15;
mb.Type=0;
mb.UserType=1;
mb.TP_pid=1;
mb.Priority=2;
mb.TP_udhi=0;
return mb;
}
int EMSP2_0::C_EMSPSender::SendMessageEx(string Caller , string Called , string scheduleTime , string Content)
{ //string log="";
MB_SUBMIT mb=GetSubmit();
mb.Called=Called;
mb.ReportFlag=1;
mb.Caller=Caller;
char str[500];
mb.chargeNumber=Caller;
if(scheduleTime.size()>0)
{
mb.SendType=1 ;
mb.ScheduleTime=scheduleTime;
}else
{
mb.SendType=0;
}
mb.MsgLen=Content.size();
int size=160;
if(size>Content.size())
{
size=Content.size();
}
for(int i=0;i<size;i++)
{
mb.MsgContent[i]=Content[i];
}
sprintf(str,"\n ClientSeq1=%d\n,clientSeq2=%d\n,SessionID=%s\n,Called=%s\n Caller=%s\n Report=%d,",
mb.ClientSeq1,mb.ClientSeq2,mb.SessionID.c_str(),mb.Called.c_str(),mb.Caller.c_str(),mb.ReportFlag);
MsgHead mh;
FillHead(&mh,C_SUBMIT);
writelog(str);
C_MB_SUBMIT mbobj(mb);
char* mbbuff=mbobj.getBytes();
size=mbobj.getSize();
mh.Total_length=size+13 ;
C_MSG_Head mhobj(mh);
char* mhbuff=mhobj.getBytes();
SendBuff((void*)mhbuff,13);
SendBuff((void*)mbbuff,size);
char buf[13];
if(ReceiveBuf((void*)buf,13))
{
mhobj.TransFromchars(buf,13);
if(mhobj.value()->Command_ID==C_SUBMIT_RESP)
{
int rsize=mhobj.value()->Total_length-13;
char* rbuf=new char[rsize];
if(ReceiveBuf((void*)rbuf,rsize))
{
C_MB_SUBMIT_RESP mbrobj;
mbrobj.TransFromchars(rbuf,rsize);
if(mbrobj.value()->Result==0)
{
return 0;
}else
{
return mbrobj.value()->Result;
}
}
}
}
return -1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -