网狐架构之客户端大厅

GamePlaza.exe
启动过程分析:

1:登录
CDlgLogon::OnOK()
CMissionLogon::PerformLogonMission
pMissionManager->AvtiveMissionItem
m_MissionSocket.PerformConnect
m_TCPSocketModule->Connect(m_dwCurrentServer,m_wCurrentPort(8300))//使用SOCKET技术连接上登录服务器

然后在下面函数中得到连接响应回复
LRESULT CTCPSocket::OnSocketNotify(WPARAM wParam, LPARAM lParam)
CTCPSocket::OnSocketNotifyConnect
//进入验证用户登录信息
ShowStatusWindow(TEXT(“正在验证用户登录信息”));
GetMissionManager()->SendData(MDM_GP_LOGON,wSubCmdID(SUB_GP_LOGON_ACCOUNTS
),cbBuffer,wPacketSize);
CTCPSocket::SendData
加密数据
发送数据
send(m_hSocket,(char *)pBuffer+wSended,wSendSize-wSended,0);

然后在下面函数中得到登录响应回复
LRESULT CTCPSocket::OnSocketNotify(WPARAM wParam, LPARAM lParam)
CTCPSocket::OnSocketNotifyRead(WPARAM wParam, LPARAM lParam)
while (m_wRecvSize>=sizeof(TCP_Head))
中循环获得的消息内容
m_pITCPSocketSink->OnEventTCPSocketRead(m_wSocketID,Command,pDataBuffer,wDataSize);
第一次循环:进入获取游戏列表
CMissionSocket::OnEventTCPSocketRead
CMissionManager::OnEventMissionRead
CMissionLogon::OnEventMissionRead
case SUB_GP_LOGON_SUCCESS: //
OnSocketSubLogonSuccess(pData,wDataSize);//进入获取游戏列表
ShowStatusWindow(TEXT("正在获取游戏列表));
第二次循环:解析并填充种类信息
case SUB_GP_LIST_TYPE:”
第三次循环:解析并填充类型信息
case SUB_GP_LIST_KIND:
第四次循环:解析并填充房间信息
注意:由此将游戏服务器的房间IP 端口填充,用于玩家点击大厅游戏列表对应游戏时连接对应的游戏服务器。(此消息是登录服务器回应,在大厅处于验证用户登录信息状态下,登录服务器的消息的
CAttemperEngineSink::OnDBPCLogonSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize)
SendGameServerInfo(dwContextID,INVALID_WORD);
函数实现中)
case SUB_GP_LIST_SERVER:
如房间ip地址 端口 房间名称
第五次循环:处理列表信息完成事件
case SUB_GP_LIST_FINISH:
第六次循环:登录完成信息
case SUB_GP_LOGON_FINISH:

你可能感兴趣的:(服务架构分析)