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

📄 sgipservicedemodlg.cpp

📁 **SgipSmg: 1、自己编写的遵循SGIP1.1的短信网关模拟程序。仅供测试、学习。 2、该程序只实现了SGIP1.1协议的一部分。 **声明: 1、用于商业目的之前必
💻 CPP
📖 第 1 页 / 共 2 页
字号:

				m_lstrunstate.InsertItem(0, strTime);
				m_lstrunstate.SetItemText(0, 1, strContent);

				int iCount = m_lstrunstate.GetItemCount();
				if (iCount > 200)
					m_lstrunstate.DeleteItem(iCount-1);

				singleLock.Unlock();
			}
		}
		else
		{//called by main thread
			m_lstrunstate.InsertItem(0, strTime);
			m_lstrunstate.SetItemText(0, 1, strContent);

			int iCount = m_lstrunstate.GetItemCount();
			if (iCount > 200)
			m_lstrunstate.DeleteItem(iCount-1);
		}
	}

	if(m_bLogState)
		m_logFile.WriteLog(strContent);
}

void CSgipServiceDemoDlg::OnBtnStarttest() 
{
	// TODO: Add your control notification handler code here
	m_bStartTest = TRUE;
	m_BtnStartTest.EnableWindow(FALSE);
	m_BtnConfig.EnableWindow(FALSE);
	///////////////////
	t_INIT_DEF  ini_def;
	ini_def.iLocalLisPort = m_iLocalLisPort;
	ini_def.strLocalPwd = m_strLocalPwd;
	ini_def.strLocalUserName = m_strLocalUserName;
	ini_def.strServerIP = m_strServerIP;
	ini_def.strServerPwd = m_strServerPwd;
	ini_def.iServerLisPort = m_iServerLisPort;
	ini_def.strServerUserName = m_strServerUserName;
	ini_def.iSPNumber = m_iSPNumber;
	ini_def.OnSMSSubmit = Callback_OnSMSSubmit;

	m_SocketRes.InitSocket(ini_def);
	//////////////////

	ResetEvent(m_hTMTAppExit);
	ResetEvent(m_hTMTExit);
	ResetEvent(m_hTMOAppExit);
	ResetEvent(m_hTMOExit);

	ShowRunState("程序启动", 0);

	AfxBeginThread(TMtct,this);
	AfxBeginThread(TMoct,this);

	m_iTestPhase = 0;
	m_BtnMOCTStart.EnableWindow(TRUE);
	m_BtnMTCTStart.EnableWindow(TRUE);
	m_BtnStopTest.EnableWindow(TRUE);
}

void CSgipServiceDemoDlg::OnBtnMtctstart() 
{
	// TODO: Add your control notification handler code here
	CTime tmBeginTime;
	tmBeginTime = CTime::GetCurrentTime();
	m_strEditMTCTBeginTime = tmBeginTime.Format("%y-%m-%d %H:%M:%S");
	UpdateData(FALSE);
	m_iTestPhase = 1;
	m_iEditMTCTRPN = 0;
	m_strEditMTCTEndTime = "";
	UpdateData(FALSE);
	m_BtnMOCTStop.EnableWindow(FALSE);
	m_BtnMOCTStart.EnableWindow(FALSE);
	m_BtnMTCTStart.EnableWindow(FALSE);		
	m_BtnMTCTStop.EnableWindow();
	m_BtnStopTest.EnableWindow(FALSE);
}

void CSgipServiceDemoDlg::OnBtnMoctstart() 
{
	// TODO: Add your control notification handler code here

	m_bStartMoctTest = TRUE;
	if(!UpdateData(TRUE)) return;
	CTime tmBeginTime;
	tmBeginTime = CTime::GetCurrentTime();
	m_strEditMOCTBeginTime = tmBeginTime.Format("%y-%m-%d %H:%M:%S");
	UpdateData(FALSE);
	m_iTestPhase = 2;
	m_BtnMOCTStop.EnableWindow();
	m_BtnMOCTStart.EnableWindow(FALSE);
	m_BtnMTCTStart.EnableWindow(FALSE);
	m_BtnMTCTStop.EnableWindow(FALSE);
	m_BtnStopTest.EnableWindow(FALSE);
}

void CSgipServiceDemoDlg::OnBtnMtctstop() 
{
	// TODO: Add your control notification handler code here
	CTime tmEndTime;
	tmEndTime = CTime::GetCurrentTime();
	m_strEditMTCTEndTime = tmEndTime.Format("%y-%m-%d %H:%M:%S");
	UpdateData(FALSE);
	m_iTestPhase = 0;
	m_BtnMOCTStop.EnableWindow(FALSE);
	m_BtnMOCTStart.EnableWindow();
	m_BtnMTCTStart.EnableWindow();
	m_BtnMTCTStop.EnableWindow(FALSE);
	m_BtnStopTest.EnableWindow();
}

void CSgipServiceDemoDlg::OnBtnMoctstop() 
{
	// TODO: Add your control notification handler code here
	m_BtnMTCTStop.EnableWindow(FALSE);
	m_bStartMoctTest = FALSE;
}

void CSgipServiceDemoDlg::OnBtnConfig() 
{
	// TODO: Add your control notification handler code here
	ReadConfigInfo();

	CDlgConfig dlgConfig;
	dlgConfig.m_strOrgPhoneNo = m_strOrgPhoneNo;
	dlgConfig.m_iLocalLisPort = m_iLocalLisPort;
	dlgConfig.m_strLocalPwd = m_strLocalPwd;
	dlgConfig.m_strLocalUserName = m_strLocalUserName;
	dlgConfig.m_strMsgContent = m_strMsgContent;
	dlgConfig.m_iMsgFmt = m_iMsgFmt;
	dlgConfig.m_strServerIP = m_strServerIP;
	dlgConfig.m_strServerPwd = m_strServerPwd;
	dlgConfig.m_iServerLisPort = m_iServerLisPort;
	dlgConfig.m_strServerUserName = m_strServerUserName;
	dlgConfig.m_iSPNumber = m_iSPNumber;

	if(IDOK == dlgConfig.DoModal())
	{
		m_strOrgPhoneNo = dlgConfig.m_strOrgPhoneNo;
		m_iLocalLisPort = dlgConfig.m_iLocalLisPort;
		m_strLocalPwd = dlgConfig.m_strLocalPwd;
		m_strLocalUserName = dlgConfig.m_strLocalUserName;
		m_strMsgContent = dlgConfig.m_strMsgContent;
		m_iMsgFmt = dlgConfig.m_iMsgFmt;
		m_strServerIP = dlgConfig.m_strServerIP;
		m_strServerPwd = dlgConfig.m_strServerPwd;
		m_iServerLisPort = dlgConfig.m_iServerLisPort;
		m_strServerUserName = dlgConfig.m_strServerUserName;
		m_iSPNumber = dlgConfig.m_iSPNumber;

		if(0 != WriteConfigInfo())
			ShowRunState("配置信息写入配置文件时发生错误!", 0);
		else
			ShowRunState("成功将配置信息写入配置文件!", 0);
	}
}

void CSgipServiceDemoDlg::OnBtnStoptest() 
{
	m_bStartTest = FALSE;
	m_BtnMOCTStart.EnableWindow(FALSE);
	m_BtnMOCTStop.EnableWindow(FALSE);
	m_BtnMTCTStart.EnableWindow(FALSE);	
	m_BtnMTCTStop.EnableWindow(FALSE);	
	m_BtnStopTest.EnableWindow(FALSE);

	TRACE("OnBtnStoptest()(let all the worker threads exit)!\n");
	if(m_iTestPhase >= 0)
	{
		SetEvent(m_hTMTAppExit);
		SetEvent(m_hTMOAppExit);
		while (WaitForSingleObject(m_hTMTExit, 0) != WAIT_OBJECT_0)
		{
			Sleep(100);
		}

		while (WaitForSingleObject(m_hTMOExit, 0) != WAIT_OBJECT_0)
		{
			Sleep(100);
		}

	}
	TRACE("OnBtnStoptest()(all the worker threads have exited)!\n");

	m_SocketRes.ExitSocket();

	m_iTestPhase = -1;

	m_BtnStartTest.EnableWindow();
	m_BtnConfig.EnableWindow();
}

void CSgipServiceDemoDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	if(m_iTestPhase > 0)
	{
		MessageBox("请先停止任何测试再退出!" , "提示");
		return;
	}
	if(IDOK == MessageBox("真的要退出吗?", "退出", MB_OKCANCEL))
	{	
		OnBtnStoptest();

		if (m_hTMTAppExit != NULL)
			::CloseHandle(m_hTMTAppExit);
		if (m_hTMTExit != NULL)
			::CloseHandle(m_hTMTExit);

		if (m_hTMOAppExit != NULL)
			::CloseHandle(m_hTMOAppExit);
		if (m_hTMOExit != NULL)
			::CloseHandle(m_hTMOExit);

			CDialog::OnCancel();	
	}
}

void CSgipServiceDemoDlg::OnCheckViewstate() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
}

void CSgipServiceDemoDlg::OnCheckLogstate() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);	
}

void CSgipServiceDemoDlg::OnCheckWaitresp() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
}

int CSgipServiceDemoDlg::Callback_OnSMSSubmit(unsigned long ulTimeID, 
		               unsigned long ulSgipSerial,
					   CString strSpNumber,
					   BYTE UserCount,
					   CString strUserNumber,
					   CString strCorpID,
					   CString strServiceType,
					   BYTE FeeType,
					   CString strFeeValue,
					   CString strGivenValue,
					   BYTE AgentFlag,
					   BYTE MorelateoMTFlag,
					   BYTE Priority,
					   CString strExpireTime,
					   CString strScheduleTime,
					   BYTE ReportFlag,
					   BYTE TP_pid,
					   BYTE TP_udhi,
					   BYTE MessageCoding,
					   BYTE MessageType,
					   unsigned long ulMessageLength,
					   CString strMsgContent)
{
	int iRet = 0;
	CSingleLock singleLock(&m_csSMSSubmit);
	if(singleLock.Lock()&&singleLock.IsLocked())
	{
		SMSSubmit smssubmit;
		smssubmit.ulTimeID = ulTimeID;
		smssubmit.ulSgipSerial = ulSgipSerial;
		smssubmit.strSpNumber = strSpNumber;
		smssubmit.UserCount = UserCount;
		smssubmit.strUserNumber = strUserNumber;
		smssubmit.strCorpID = strCorpID;
		smssubmit.strServiceType = strServiceType;
		smssubmit.FeeType = FeeType;
		smssubmit.strFeeValue = strFeeValue;
		smssubmit.strGivenValue = strGivenValue;
		smssubmit.AgentFlag = AgentFlag;
		smssubmit.MorelateoMTFlag = MorelateoMTFlag;
		smssubmit.Priority = Priority;
		smssubmit.strExpireTime = strExpireTime;
		smssubmit.strScheduleTime = strScheduleTime;
		smssubmit.ReportFlag = ReportFlag;
		smssubmit.TP_pid = TP_pid;
		smssubmit.TP_udhi = TP_udhi;
		smssubmit.MessageCoding = MessageCoding;
		smssubmit.MessageType = MessageType;
		smssubmit.ulMessageLength = ulMessageLength;
		smssubmit.strMsgContent = strMsgContent;

		POSITION pos = m_SMSSubmitList.AddHead(smssubmit);
		singleLock.Unlock();
	}
	else
	{
		iRet = -1;
	}
	return iRet;
}

//retvalue: -1:some errors
//          0:get nothing
//          1:get one!
int CSgipServiceDemoDlg::GetSMSSubmit(SMSSubmit &smssubmit)
{
	int iRet = 0;

	CSingleLock singleLock(&m_csSMSSubmit);
	if(singleLock.Lock()&&singleLock.IsLocked())
	{
		if(m_SMSSubmitList.GetCount() <= 0)
		{
			iRet = 0;
			singleLock.Unlock();
			return iRet;
		}
		smssubmit = m_SMSSubmitList.RemoveTail();
		iRet = 1;
		singleLock.Unlock();
	}
	else
	{
		iRet = -1;
	}
	return iRet;
}


int CSgipServiceDemoDlg::DeliverOneMsg(CString strUserNum, CString strContent, unsigned long ulSgipSerialNo, int iMsgCoding,  BOOL bWaitResp)
{
	return m_SocketRes.DeliverOneMsg(strUserNum, 
									 strContent, 
									 ulSgipSerialNo,
									 iMsgCoding,
									 bWaitResp);
}

⌨️ 快捷键说明

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