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

📄 commanager.cpp

📁 能够实现联通和移动短消息群发的软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	{
		m_CSSubmitRspQueue.Unlock();
	}
	return TRUE;
}
BOOL CComManager::ProcessErrorReport(char szBuf[])
{
	STRUCT_ERROR_REPORT* psErrorReport;
	psErrorReport = (STRUCT_ERROR_REPORT*)szBuf;
	char szMsg[512];
	sprintf(szMsg,"错误报告:%s\r\n",psErrorReport->szError_Msg);
	ShowInfo(szMsg); 

	STRUCT_SUBMIT_QUEUE sSubmitElement;
	sSubmitElement.dwSeqID = ntohl(psErrorReport->sHeader.dwSeqNo);
	m_CSSubmitQueue.Lock();
	POSITION pos = m_SubmitList.Find(sSubmitElement);
	if(pos != NULL)
	{
		m_SubmitList.RemoveAt(pos);
		m_CSSubmitQueue.Unlock();
		return TRUE;
	}
	else
	{
		m_CSSubmitQueue.Unlock();
	}
	STRUCT_SUBMITRSP_QUEUE sSubmitRspElement;
	sSubmitRspElement.dwPlatID = ntohl(psErrorReport->sHeader.dwSeqNo);
	m_CSSubmitRspQueue.Lock();
	pos = m_SubmitRspList.Find(sSubmitRspElement);
	if(pos != NULL)
	{
		m_SubmitRspList.RemoveAt(pos);
		m_CSSubmitRspQueue.Unlock();
		return TRUE;
	}
	else
	{
		m_CSSubmitRspQueue.Unlock();
	}
	return FALSE;
}
BOOL CComManager::ProcessDelivery(char szBuf[],DWORD dwBufLen)
{
	STRUCT_DELIVERY* psDelivery;
	psDelivery = (STRUCT_DELIVERY*)szBuf;
	if(psDelivery->sDeliveryHeader.cReDelivery_Count != 0)
		return FALSE;
	char szMsg[512];
	sprintf(szMsg,"收到一条来自%s的Delivery消息:\r\n",psDelivery->sDeliveryHeader.szService_Number);
	ShowInfo(szMsg); 
	sprintf(szMsg,"——消息内容为:%s\r\n",psDelivery->sCMPP12Delivery.Msg_Content);
	ShowInfo(szMsg); 
	return TRUE;
}
BOOL CComManager::ProcessDiscMsg()
{
	if(m_pClientSocket == NULL)
	{
	
		ShowInfo("应用还未登录到平台!\r\n"); 
		return FALSE;
	}
	return m_pClientSocket->Disc();
}
BOOL CComManager::ProcessSubmitMsg(STRUCT_SUBMIT sSubmit)
{
	char szMsg[512];
	CString Mobil;

	if(m_pClientSocket == NULL)
	{
		sprintf(szMsg,"还未连接到平台\r\n");
		ShowInfo(szMsg);
		return FALSE;
	}
	DWORD dwSeqID;
	dwSeqID = m_pClientSocket->SubmitMsg(sSubmit);
	if(dwSeqID == 0)
	{
		//发送错误
		sprintf(szMsg,"与平台连接断开,此时正在重连\r\n");
		ShowInfo(szMsg);
		return FALSE;
	}

	STRUCT_SUBMIT_QUEUE sSubmitElement;
	sSubmitElement.dwSeqID = dwSeqID;
	
	if(sSubmit.sSubmitHeader.cTimeOut == 0)
		sSubmitElement.cTimeOut = 2;
	else
		sSubmitElement.cTimeOut = sSubmit.sSubmitHeader.cTimeOut;
	memcpy((void*)&sSubmitElement.sSubmit,(void*)&sSubmit,sizeof(STRUCT_SUBMIT));
	m_CSSubmitQueue.Lock();
	if(m_SubmitList.GetCount() >= BUFFER_LEN)
	{
		m_CSSubmitQueue.Unlock();
		//发送缓冲区满
		return FALSE;
	}
	m_SubmitList.AddTail(sSubmitElement);
	m_CSSubmitQueue.Unlock();
	Mobil=sSubmitElement.sSubmit.sCMPP12Submit.szDest_terminal_ids ;  
	sprintf(szMsg," 提交消息:手机:%s,流水号:%d\r\n",Mobil,dwSeqID);
	//写库 Mobil,SeqID
	ShowInfo(szMsg);
	return TRUE;
}
BOOL CComManager::IniSCMPP(LPCTSTR IP, short Port, LPCTSTR AppName, LPCTSTR Pwd,WORD AppID)
{
	//IniSock();
	//参数 
	STRUCT_SERVER_INFO	m_sServerInfo;
	STRUCT_APPLOGIN_INFO m_sAppLoginInfo;
	strcpy(m_sServerInfo.szIP,IP);
	m_sServerInfo.nPort =Port;
	
	strcpy(m_sAppLoginInfo.szAppName,AppName);
	strcpy(m_sAppLoginInfo.szPassword,Pwd);
	m_sAppLoginInfo.wAppID = AppID;
	
	if(!InitCom(m_sServerInfo,m_sAppLoginInfo))
	{
		//SetWindowText(hWndOra,"连接失败!");
		return false;
	}
	return true;
}


DWORD WINAPI CheckListThread(LPVOID lpParam)
{
	CComManager* pManager = (CComManager*)lpParam;
	STRUCT_SUBMIT_QUEUE		sSubmitElement;
	STRUCT_SUBMITRSP_QUEUE	sSubmitRspElement;
	int nCount = 0;
	POSITION pos,posTemp;
	while(!pManager->m_bThreadEnd)
	{
		if(nCount != 20)
		{
			nCount++;
			Sleep(500);
			continue;
		}
		nCount = 0;
		pManager->m_CSSubmitQueue.Lock();
		if(!pManager->m_SubmitList.IsEmpty())
		{
			pos = pManager->m_SubmitList.GetHeadPosition();
			while(pos)
			{
				posTemp = pos;
				sSubmitElement = pManager->m_SubmitList.GetNext(pos);
				if(sSubmitElement.cTimeOut == 0)
					pManager->m_SubmitList.RemoveAt(posTemp);
				else
				{
					sSubmitElement.cTimeOut--;
					pManager->m_SubmitList.SetAt(posTemp,sSubmitElement);
				}
			}
		}
		pManager->m_CSSubmitQueue.Unlock();

		pManager->m_CSSubmitRspQueue.Lock();
		if(!pManager->m_SubmitRspList.IsEmpty())
		{
			pos = pManager->m_SubmitRspList.GetHeadPosition();
			while(pos)
			{
				posTemp = pos;
				sSubmitRspElement = pManager->m_SubmitRspList.GetNext(pos);
				if(sSubmitRspElement.cTimeOutLeave == 0)
					pManager->m_SubmitRspList.RemoveAt(posTemp);
				else
				{
					sSubmitRspElement.cTimeOutLeave--;
					pManager->m_SubmitRspList.SetAt(posTemp,sSubmitRspElement);
				}
			}
		}
		pManager->m_CSSubmitRspQueue.Unlock();
	}
	return 0;
}


DWORD CComManager::Submit(BYTE m_btServiceChannelID,BYTE cRegistered_Delivery,
	   BYTE m_btCredTransmit,BYTE SaveID,BYTE MsgLevel,BYTE MsgFMT,
	   LPCTSTR m_strServiceID,LPCTSTR m_strFeeType,LPCTSTR m_strFeeCode,
       BYTE m_btFeeUserType,LPCTSTR m_strFeeTerminalID,LPCTSTR m_strSrcTerminalID,
	   LPCTSTR m_strDestTerminalID,LPCTSTR m_strMsgContent)
{
	CString strBobilID,tt;
	BYTE BobilID;
	STRUCT_SUBMIT sSubmit;
	tt=(CString)m_strDestTerminalID;
	strBobilID=tt.Mid(0,3);
	BobilID=1;
    
	if(strBobilID=="130" || strBobilID=="131" || strBobilID=="133")    BobilID=2;
	

	
	//重发消息计数1B
	sSubmit.sSubmitHeader.cReSubmit_Count = 0;//'m_btReSubmitCount;
	//通道协议类型
	sSubmit.sSubmitHeader.cChannel_Protocol =0;//' m_btChannelProtocol;
	//电信网络运营商
	sSubmit.sSubmitHeader.cTNO = BobilID;
	//服务通道ID
	sSubmit.sSubmitHeader.cService_ChannelID = m_btServiceChannelID;
	//服务平台ID
	sSubmit.sSubmitHeader.cService_Plat =0;//' m_btSevicePlatID;
	//请求平台ID
	sSubmit.sSubmitHeader.cRequest_Plat =0;//' m_btRequestPlatID;
	//优先级标志
	sSubmit.sSubmitHeader.cPriority_Flag = 0;//'m_btPriorityFlag;
	//数据包协议类型
	sSubmit.sSubmitHeader.cProtocol_Type = 1;//'只能为1m_btProtocolType;
	//超时时间间隔
	sSubmit.sSubmitHeader.cTimeOut = 6;
	//可靠性传输标志
	sSubmit.sSubmitHeader.cCredibility_Transmit =m_btCredTransmit;
	//存储转发标志
	sSubmit.sSubmitHeader.cSaveForTramSmit = SaveID;
	//消息优先级别
	sSubmit.sCMPP12Submit.cMsg_Level = MsgLevel;
	//消息格式1b
	sSubmit.sCMPP12Submit.cMsg_Fmt = MsgFMT;
	//GSM协议类型1b
	sSubmit.sCMPP12Submit.cTP_pid = 0;
	sSubmit.sCMPP12Submit.cTP_udhi = 0;
	//状态报告
	sSubmit.sCMPP12Submit.cRegistered_Delivery =cRegistered_Delivery;
	//业务类别
	strcpy(sSubmit.sCMPP12Submit.szService_ID,m_strServiceID);//,10);
	//资费类别2bs
	strcpy(sSubmit.sCMPP12Submit.szFeeType,m_strFeeType);//,2);
	//资费代码6bs
	strcpy(sSubmit.sCMPP12Submit.szFeeCode,m_strFeeCode);//,6);
	//记费用户类型1
	sSubmit.sCMPP12Submit.cFee_UserType = m_btFeeUserType;
	//存活17bs
	strcpy(sSubmit.sCMPP12Submit.szValid_Time,"\0");//,17);
	//定时17bs
	strcpy(sSubmit.sCMPP12Submit.szAt_Time,"\0");//,17);
	//被计费用户21BS
	strcpy(sSubmit.sCMPP12Submit.szFee_terminal_ID,m_strFeeTerminalID);//,21);
	//源终端ISDN 21bs
	strcpy(sSubmit.sCMPP12Submit.szSrc_terminal_id,m_strSrcTerminalID);//,21);
    //接受业务ISDN 21BS
	strcpy(sSubmit.sCMPP12Submit.szDest_terminal_ids,m_strDestTerminalID);//,21);
	//消息长度2B
	sSubmit.sCMPP12Submit.wMsg_Length =htons((WORD)lstrlen(m_strMsgContent));
	//消息内容
	strcpy(sSubmit.sCMPP12Submit.szMsg_Content,m_strMsgContent);//,m_sMsgLength);
	return ProcessSubmitMsg(sSubmit);
}

void CComManager::ShowInfo(CString szMsg)
{
	static long ii;
	ii++;
	CEdit& TempEdit = ((CAppDemoView*)((CMainFrame*)AfxGetApp()->GetMainWnd())->GetActiveView())->GetEditCtrl();
	if(ii>1000){TempEdit.SetWindowText("");ii=0;} 
	TempEdit.SetSel(TempEdit.GetSel());
	TempEdit.ReplaceSel(szMsg);
}

⌨️ 快捷键说明

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