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

📄 sgipservicedemodlg.cpp

📁 1、自己编写的遵循SGIP1.1协议的短信客户端程序。仅供测试、学习。 2、该程序只实现了SGIP1.1协议的一部分。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	m_BtnMTMOStart.EnableWindow(TRUE);
	m_BtnMOCTStart.EnableWindow(TRUE);
	m_BtnMTCTStart.EnableWindow(TRUE);
	m_BtnStopTest.EnableWindow(TRUE);
}

void CSgipServiceDemoDlg::OnBtnMtctstart() 
{
	// TODO: Add your control notification handler code here
	m_bStartMtctTest = TRUE;
	UpdateData(TRUE);
	CTime tmBeginTime;
	tmBeginTime = CTime::GetCurrentTime();
	m_strEditMTCTBeginTime = tmBeginTime.Format("%y-%m-%d %H:%M:%S");
	UpdateData(FALSE);
	m_iTestPhase = 1;
	m_BtnMTMOStop.EnableWindow(FALSE);
	m_BtnMTMOStart.EnableWindow(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
	CTime tmBeginTime;
	tmBeginTime = CTime::GetCurrentTime();
	m_strEditMOCTBeginTime = tmBeginTime.Format("%y-%m-%d %H:%M:%S");
	UpdateData(FALSE);
	m_iTestPhase = 2;
	m_iEditMOCTRPN = 0;
	m_strEditMOCTEndTime = "";
	UpdateData(FALSE);
	m_BtnMTMOStop.EnableWindow(FALSE);
	m_BtnMTMOStart.EnableWindow(FALSE);
	m_BtnMOCTStop.EnableWindow();
	m_BtnMOCTStart.EnableWindow(FALSE);
	m_BtnMTCTStart.EnableWindow(FALSE);		
	m_BtnMTCTStop.EnableWindow(FALSE);
	m_BtnStopTest.EnableWindow(FALSE);
}

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

void CSgipServiceDemoDlg::OnBtnMtmostart() 
{
	// TODO: Add your control notification handler code here
	CTime tmBeginTime;
	tmBeginTime = CTime::GetCurrentTime();
	m_strEditMTMOBeginTime = tmBeginTime.Format("%y-%m-%d %H:%M:%S");
	UpdateData(FALSE);
	m_iTestPhase = 3;
	m_iEditMTMORPN = 0;
	m_strEditMTMOEndTime = "";
	m_iEditMTMOSPN = 0;
	UpdateData(FALSE);
	m_BtnMTMOStop.EnableWindow();
	m_BtnMTMOStart.EnableWindow(FALSE);
	m_BtnMOCTStop.EnableWindow(FALSE);
	m_BtnMOCTStart.EnableWindow(FALSE);
	m_BtnMTCTStart.EnableWindow(FALSE);
	m_BtnMTCTStop.EnableWindow(FALSE);
	m_BtnStopTest.EnableWindow(FALSE);
}

void CSgipServiceDemoDlg::OnBtnMtmostop() 
{
	// TODO: Add your control notification handler code here
	CTime tmEndTime;
	tmEndTime = CTime::GetCurrentTime();
	m_strEditMTMOEndTime = tmEndTime.Format("%y-%m-%d %H:%M:%S");
	UpdateData(FALSE);
	m_iTestPhase = 0;
	m_BtnMTMOStop.EnableWindow(FALSE);

	//++
	//因为TMomtct线程中用到“pDlg->SubmitOneMsg”,而SubmitOneMsg在
	//网络状态不好时可能使线程等待,所以界面上一些按钮的“使能”最好
	//还是放在TMomtct线程中比较好。
	m_BtnMTMOStart.EnableWindow();
	m_BtnMOCTStop.EnableWindow(FALSE);
	m_BtnMOCTStart.EnableWindow();
	m_BtnMTCTStart.EnableWindow();
	m_BtnMTCTStop.EnableWindow(FALSE);
	m_BtnStopTest.EnableWindow();

}

//////////////////////////////////////////////////////////////////////////
//function:submit one short message
//input:
//retval:0:ok
/////////////////////////////////////////////////////////////////////////
int CSgipServiceDemoDlg::SubmitOneMsg(CString strContent, 
									  CString strDestPhoneNum, 
									  CString strFeePhoneNo, 
									  unsigned long ulSgipSerialNo, 
									  int iReportFlag,
									  int iMsgCoding,
									  BOOL bWaitResp)
{
	return m_SocketRes.SubmitOneMsg(strContent, 
									strDestPhoneNum, 
									strFeePhoneNo, 
									ulSgipSerialNo, 
									iReportFlag,
									iMsgCoding,
									bWaitResp);
}


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

	CDlgConfig dlgConfig;
	dlgConfig.m_iCorpID = m_iCorpID;
	dlgConfig.m_strDestPnoneNo = m_strDestPnoneNo;
	dlgConfig.m_strFeePhoneNo = m_strFeePhoneNo;
	dlgConfig.m_iFeeType = m_iFeeType;
	dlgConfig.m_iFeeValue = m_iFeeValue;
	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_iMsgLevel = m_iMsgLevel;
	dlgConfig.m_iRepFlag = m_iRepFlag;
	dlgConfig.m_strServerIP = m_strServerIP;
	dlgConfig.m_strServerPwd = m_strServerPwd;
	dlgConfig.m_iServerLisPort = m_iServerLisPort;
	dlgConfig.m_strServerUserName = m_strServerUserName;
	dlgConfig.m_lSourceID = m_lSourceID;
	dlgConfig.m_iSPNumber = m_iSPNumber;

	if(IDOK == dlgConfig.DoModal())
	{
		m_iCorpID = dlgConfig.m_iCorpID;
		m_strDestPnoneNo = dlgConfig.m_strDestPnoneNo;
		m_strFeePhoneNo = dlgConfig.m_strFeePhoneNo;
		m_iFeeType = dlgConfig.m_iFeeType;
		m_iFeeValue = dlgConfig.m_iFeeValue;
		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_iMsgLevel = dlgConfig.m_iMsgLevel;
		m_iRepFlag = dlgConfig.m_iRepFlag;
		m_strServerIP = dlgConfig.m_strServerIP;
		m_strServerPwd = dlgConfig.m_strServerPwd;
		m_iServerLisPort = dlgConfig.m_iServerLisPort;
		m_strServerUserName = dlgConfig.m_strServerUserName;
		m_lSourceID = dlgConfig.m_lSourceID;
		m_iSPNumber = dlgConfig.m_iSPNumber;

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

void CSgipServiceDemoDlg::OnBtnStoptest() 
{
	m_bStartTest = FALSE;
	m_BtnMTMOStart.EnableWindow(FALSE);
	m_BtnMTMOStop.EnableWindow(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);
		SetEvent(m_hTMOMTAppExit);
		while (WaitForSingleObject(m_hTMTExit, 0) != WAIT_OBJECT_0)
		{
			Sleep(100);
		}
		while (WaitForSingleObject(m_hTMOExit, 0) != WAIT_OBJECT_0)
		{
			Sleep(100);
		}
		while (WaitForSingleObject(m_hTMOMTExit, 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);

		if (m_hTMOMTAppExit != NULL)
			::CloseHandle(m_hTMOMTAppExit);
		if (m_hTMOMTExit != NULL)
			::CloseHandle(m_hTMOMTExit);
			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_OnSMSSubmitResp(unsigned long ulTimeID, 
		                unsigned long ulSgipSerial,
						int iSubmitResult)
{
	return 0;//在该测试程序中不做Submit Resp包的性能测试!!!

	int iRet = 0;
	CSingleLock singleLock(&m_csSMSSubmitResp);
	if(singleLock.Lock()&&singleLock.IsLocked())
	{
		SMSSubmitResp smssubmitresp;
		smssubmitresp.ulTimeID = ulTimeID;
		smssubmitresp.ulSgipSerial = ulSgipSerial;
		smssubmitresp.iSubmitResult = iSubmitResult;
		POSITION pos = m_SMSSubmitRespList.AddHead(smssubmitresp);
		singleLock.Unlock();
	}
	else
	{
		iRet = -1;
	}
	return iRet;
}*/

int CSgipServiceDemoDlg::Callback_OnSMSDeliver(unsigned long ulSgipSerial,
		             unsigned long ulTimeID,
					 CString strGSMNo,
					 CString strDeliverMsg)
{
	int iRet = 0;

	if(2 == m_iTestPhase || 3 == m_iTestPhase)//只在做MO、MOMT性能测试时才接收deliver消息!!
	{
		CSingleLock singleLock(&m_csSMSDeliver);
		if(singleLock.Lock()&&singleLock.IsLocked())
		{
			SMSDeliver smsdeliver;
			smsdeliver.ulTimeID = ulTimeID;
			smsdeliver.ulSgipSerial = ulSgipSerial;
			smsdeliver.strGSMNo = strGSMNo;
			smsdeliver.strDeliverMsg = strDeliverMsg;
			POSITION pos = m_SMSDeliverList.AddHead(smsdeliver);
			singleLock.Unlock();
		}
		else
		{
			iRet = -1;
		}

	}
	return iRet;
}

int CSgipServiceDemoDlg::Callback_OnSMSReport(unsigned long ulSgipSerial,
		            unsigned long ulTimeID,
					CString strGSMNo,
					int iState,
					int iErrorCode)
{
	return 0;//在该测试程序中不做report包的性能测试!!!

	int iRet = 0;
	CSingleLock singleLock(&m_csSMSReport);
	if(singleLock.Lock()&&singleLock.IsLocked())
	{
		SMSReport smsreport;
		smsreport.ulTimeID = ulTimeID;
		smsreport.ulSgipSerial = ulSgipSerial;
		smsreport.strGSMNo = strGSMNo;
		smsreport.iState = iState;
		smsreport.iErrorCode = iErrorCode;
		POSITION pos = m_SMSReportList.AddHead(smsreport);
		singleLock.Unlock();
	}
	else
	{
		iRet = -1;
	}
	return iRet;
}

//retvalue: -1:some errors
//          0:get nothing
//          1:get one!
/*int CSgipServiceDemoDlg::GetSMSSubmitResp(SMSSubmitResp &smssubmitresp)
{
	int iRet = 0;

	CSingleLock singleLock(&m_csSMSSubmitResp);
	if(singleLock.Lock()&&singleLock.IsLocked())
	{
		if(m_SMSSubmitRespList.GetCount() <= 0)
		{
			iRet = 0;
			singleLock.Unlock();
			return iRet;
		}
		smssubmitresp = m_SMSSubmitRespList.RemoveTail();
		iRet = 1;
		singleLock.Unlock();
	}
	else
	{
		iRet = -1;
	}
	return iRet;
}*/

//retvalue: -1:some errors
//          0:get nothing
//          1:get one!
int CSgipServiceDemoDlg::GetSMSDeliver(SMSDeliver &smsdeliver)
{
	int iRet = 0;

	CSingleLock singleLock(&m_csSMSDeliver);
	if(singleLock.Lock()&&singleLock.IsLocked())
	{
		if(m_SMSDeliverList.GetCount() <= 0)
		{
			iRet = 0;
			singleLock.Unlock();
			return iRet;
		}
		smsdeliver = m_SMSDeliverList.RemoveTail();
		iRet = 1;
		singleLock.Unlock();
	}
	else
	{
		iRet = -1;
	}
	return iRet;
}

//retvalue: -1:some errors
//          0:get nothing
//          1:get one!
int CSgipServiceDemoDlg::GetSMSReport(SMSReport &smsreport)
{
	int iRet = 0;

	CSingleLock singleLock(&m_csSMSReport);
	if(singleLock.Lock()&&singleLock.IsLocked())
	{
		if(m_SMSReportList.GetCount() <= 0)
		{
			iRet = 0;
			singleLock.Unlock();
			return iRet;
		}
		smsreport = m_SMSReportList.RemoveTail();
		iRet = 1;
		singleLock.Unlock();
	}
	else
	{
		iRet = -1;
	}
	return iRet;
}

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

⌨️ 快捷键说明

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