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

📄 _emspsender.cpp

📁 这是江苏企业通讯协议(联通版本)的一个Release
💻 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 + -