📄 mainproc.cpp
字号:
#include "stdafx.h"
#include "serverWGUI.h"
#include "SysInfoList.h"
#include "mainProc.h"
#include <direct.h>
#include "iniWrapper.h"
CSysInfoDisplay glo_myDisplay(MY_SERVER_NAME,LOG_FILE);
CSocketGlobalDataStorage glo_storeData(MY_SERVER_NAME,MainProcCallback,&glo_myDisplay);//创建文件输出对象
CSocketParentThread glo_parentThread(&glo_storeData);
CDialog *glo_pMainDlg=NULL;
int glo_iListenSockPort=9988;
//处理线程
void MainProcCallback(CServerStatus* pS,CSocketChildThread* pC)
{//回调函数,功能:直接返回对方发送来的数据
//SOCKET sSock = pC->m_sockComm.m_sockComm; 可以得到SOCKET变量
int iRead,iWrote;
if(pS->GetParentThreadStatus() != CServerStatus::Running)
{//判断当前服务器是否为运行状态
char szRet[]="当前未运行";
pC->m_sockComm.Send(strlen(szRet) +1,(BYTE*)szRet,iWrote);
return ;
}
while(1)
{
BYTE b;
if(SP_ERR_SUCCESS == pC->m_sockComm.Recv(1,&b,iRead))
pC->m_sockComm.Send(1,&b,iWrote);
else
break;
}
//等待客户端退出
// BYTE _bTemp[1024];
// int _iRead;
// while(SP_ERR_NETWORK != pC->m_sockComm.TestAndRecv(30,1024,(BYTE*)_bTemp,_iRead)){};
}
//在系统刚开始运行时初始化系统环境
//1、检测ini文件是否存在
//2、读取数据库的设置
//3、设置日志文件目录
BOOL InitSysEnv(CDialog *pDlgMain)
{
glo_pMainDlg = pDlgMain;
CIniWrap iniR(INI_SETTING_FILE);
iniR.ReadInt ("server","listen_port",glo_iListenSockPort);
glo_myDisplay.PutLineEx(COutputDisplay::Message,"Port=%d",glo_iListenSockPort);
return TRUE;
}
BOOL CSysInfoDisplay::PutLine(ErrorLevel eLevel,LPCSTR pszOutPut)
{//调用CFileOutputDisplay::PutLine()
DWORD dwID;
//CDialog* pMainDlg=(CDialog*)CWnd::FromHandle (glo_hMainWnd) ;
CSysInfoList *pList ;
switch (eLevel)
{
//显示在成功显示栏上
case ErrorLevel::Message:
case ErrorLevel::Success:
case ErrorLevel::GeneralWarn:
dwID=IDC_LIST_SYS_RUN_INFO;
break;
//显示在错误显示栏上
case ErrorLevel::FatalWarn:
case ErrorLevel::GeneralError:
case ErrorLevel::FatalError:
dwID=IDC_LIST_SYS_ERR_INFO;
//绑定写错误日志
//glo_cAppErrLog.PutLine (COutputDisplay::GeneralError,szTemp);
break;
}
pList=(CSysInfoList *)glo_pMainDlg->GetDlgItem(dwID);
pList->DisplayMsg ((int)eLevel,pszOutPut);
return CFileOutputDisplay::PutLine (eLevel,pszOutPut);
};
BOOL CSysInfoDisplay::PutLineEx(ErrorLevel eLevel,LPCSTR pszOutPut,...)
{
char szTemp[4096];
va_list marker;
va_start(marker, pszOutPut );
int ret=vsprintf(szTemp,pszOutPut,marker);
va_end(marker);
//调用本类的PutLine()
return PutLine(eLevel,szTemp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -