网狐架构之登录服务器

LogonServer.exe
启动过程分析:

1:CLogonServerDlg::OnInitDialog()
m_ServiceUnits.SetServiceUnitsSink(this);
m_pIServiceUnitsSink=pIServiceUnitsSink;//同协调服务器过程
2:启动服务:
CLogonServerDlg::OnBnClickedStartService()
m_ServiceUnits.StartService();
CServiceUnits::StartService()//注意此CServiceUnits隶属于登录服务器的CServiceUnits
CServiceUnits::InitializeService()
初始化定时器 调度 网络引擎,且初始化数据库引擎和
协调服务CTCPSocketServiceHelper m_TCPSocketService
配置网络(m_TCPNetworkEngine->SetServiceParameter(wServicePort(8300),wMaxConnect,szCompilation)
此端口位于ServerParameter.in的"LogonServer"),TEXT("ServicePort"节点,由于配置文件未配置,故使用游戏组件/开发库/Packet.h中的PORT_LOGON枚举

CServiceUnits::StartKernelService()
启动以上各内核引擎和协调服务

SendControlPacket(CT_LOAD_DB_GAME_LIST,NULL,0);
case UI_LOAD_DB_LIST_RESULT:
SendControlPacket(CT_CONNECT_CORRESPOND,NULL,0);//连接协调服务器

登录服务连接回应在
CTCPSocketService::OnSocketNotify(WPARAM wParam, LPARAM lParam)
m_pIQueueService.AddToQueue(EVENT_TCP_SOCKET_LINK, m_cbBuffer, sizeof(NTY_TCPSocketLinkEvent));

case EVENT_TCP_SOCKET_LINK:
m_pITCPSocketService->SendData(MDM_CS_REGISTER,SUB_CS_C_REGISTER_PLAZA,&RegisterPlaza,sizeof(RegisterPlaza));//向协调服务器获取注册大厅信息即包括斗地主服务IP端口等信息,
协调服务响应在对应的响应中取出房间相关的信息并回应登录服务器
CGlobalServerItem * pGlobalServerItem=m_GlobalInfoManager.EnumServerItem(Position);
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_CS_SERVICE_INFO,SUB_CS_S_SERVER_INSERT,cbBuffer,wPacketSize);

登录服务器对应的消息回应中填充游戏服务器的相关信息
m_ServerItemMap[pGameServer->wServerID]=pGameServerItem;如斗地主服务名称 斗地主服务IP 端口等供大厅服务器登录时获取此斗地主信息,并用于玩家点击游戏列表时连接斗地主服务器进入房间

注意网络引擎是在CServiceUnits::OnUIControlRequest函数中
case UI_CORRESPOND_RESULT:协调结果成功后在启动的
随即设置登录服务器为服务状态,启动成功

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值