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

📄 mainserver.cpp

📁 A3服务端AccountServer源代码
💻 CPP
字号:
#include "StdInc.h"
#include "Common.h"
#include "Functions.h"

CMainServer::CMainServer()
{
	m_bRunServer = FALSE;
}

CMainServer::~CMainServer()
{

}

BOOL	CMainServer::RunServer()
{
	if (Connect(g_szMainServerIP, g_nMainServerPort) == FALSE) return FALSE;
	
	ResizeSNDBUF(MAIN_SOCK_BUF_SIZE);
	ResizeRCVBUF(MAIN_SOCK_BUF_SIZE);

	// Main Server俊 立加窍搁 Server Login Message 傈价 
	Msg_S2M_Svr_Login.byThisServerID = g_byThisServerID;
	// 酒流 send thread甫 剁快瘤 臼疽栏骨肺 流立 send 
	send(m_sSocket, (const char *)&Msg_S2M_Svr_Login, sizeof(Msg_S2M_Svr_Login), 0);

	m_bConnect = TRUE;
	m_nRecvStartPos = m_nRecvEndPos = 0;
	
	m_bRunServer = TRUE;

	SetNetEvent();
	if (InitSendThread() == FALSE) return FALSE;

	return TRUE;
}

void	CMainServer::OnClose()
{
	CloseSendThread();

	m_bConnect = FALSE;
	m_bRunServer = FALSE;

	closesocket(m_sSocket);
}

BOOL	CMainServer::GetMsgHeader(MSG_S2S_HEADER * pMsgHeader)
{
	if (GetSizeInBuf() < sizeof(MSG_S2S_HEADER)) return FALSE; 
	
	memcpy(pMsgHeader, &(m_RecvMsgQBuf[m_nRecvStartPos]), sizeof(MSG_S2S_HEADER));
	return TRUE;
}


void	CMainServer::ParseMsg()
{
	char	tmpBuffer[8192];
	MSG_S2S_HEADER	tmpMsgHeader;
	void		*	pMsg;
	
	while(GetSizeInBuf())
	{
		if (GetMsgHeader(&tmpMsgHeader) == FALSE) return;

		switch(tmpMsgHeader.wProtocol)
		{			
			case M2S_ERROR:
				//printf("Main M2S_ERROR\n");
				if (( pMsg = PopMsgQ(sizeof(MSG_M2S_ERROR)) ) == NULL) return;
				Func_M2S_ERROR((MSG_M2S_ERROR *)pMsg);
				break;

			case M2S_CHAR_LOGIN:
				//printf("Main M2S_CHAR_LOGIN\n");
				if (( pMsg = PopMsgQ(sizeof(MSG_M2S_CHAR_LOGIN)) ) == NULL) return;
				Func_M2S_CHAR_LOGIN((MSG_M2S_CHAR_LOGIN *)pMsg);
				break;

			case M2S_CHAR_UPDATE:
				//printf("Main M2S_CHAR_UPDATE\n\n");
				if (( pMsg = PopMsgQ(sizeof(MSG_M2S_CHAR_UPDATE)) ) == NULL) return;
				Func_M2S_CHAR_UPDATE((MSG_M2S_CHAR_UPDATE *)pMsg);
				break;

			case M2S_ANS_CREATE_PLAYER:
				if (( pMsg = PopMsgQ(sizeof(MSG_M2S_ANS_CREATE_PLAYER)) ) == NULL) return;
				Func_M2S_ANS_CREATE_PLAYER((MSG_M2S_ANS_CREATE_PLAYER *)pMsg);
				break;

			case M2S_ANS_DELETE_PLAYER:
				//printf("Main M2S_ANS_DELETE_PLAYER\n\n");
				if (( pMsg = PopMsgQ(sizeof(MSG_M2S_ANS_DELETE_PLAYER)) ) == NULL) return;
				Func_M2S_ANS_DELETE_PLAYER((MSG_M2S_ANS_DELETE_PLAYER *)pMsg);
				break;

			default :
				//抗寇贸府
				Print("From Main: Unknown Server Protocol!\n");
				if (PopMsgQ(&tmpBuffer, GetSizeInBuf()))
				break;
		}
	}
}

BOOL	CMainServer::ExceptionHandler(BYTE ErrCode)
{
	switch(ErrCode)
	{
	case SEND_FAILURE:
		break;

	case READ_FAILURE:
		break;

	default:
		// 抗寇贸府
		break;
	}

	return TRUE;
}

⌨️ 快捷键说明

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