网狐棋牌服务器
工厂模式的接口,仿com库模式实例化,异步调度引擎,对于棋牌卡牌游戏来说是个不错的开源项目,6603原始版本有内存泄漏,6701是某人扩展的修复版本,7.0.1是DIY项目,而对于开发的移动客户端,架构逻辑非常坑,应该不是同一个公司开发的,用于学习的话还行,商业化慎用.
>构建网络、数据库管理服务
>外部处理接口由用户二次开发
荣耀:登陆服务器
登录服务器流程LogonServer.exe
@@m_FlashAccredit.StartService();//启动网络服务
==》listen //监听端口
==》m_lIOCPHandle = CreateIoCompletionPort//完成端口
==》CreateThread();AcceptWork,ReadWriteWork//创建工作线程
@@StartService();//点击启动服务按钮
==》InitializeService()//初始化
==》StartKernelService()//启动内核
登录服务器流程:
入口:LogonServerDlg.cpp--->OnBnClickedStartService()==>m_ServiceUnits.StartService()
ServiceUnits.cpp--->StartService()==>StartKernelService() //启动内核:时间引擎、调度引擎、数据引擎、协调引擎
内核引擎--->时间引擎 StartService()==>m_TimerThread.StartThread() //启动线程
内核引擎--->调度引擎 StartService()==>m_QueueService.StartService() //启动队列
内核引擎--->数据引擎 StartService()==>m_pIDataBaseEngineSink->OnDataBaseEngineStart //启动外挂
内核引擎--->协调引擎 StartService()==>m_QueueService.StartService()
内核引擎--->网络引擎 StartService()==>CreateIOComleptionPort()
StartService()==>m_SendQueueService.StartService() //启动发送队列
内核引擎--->队列引擎 StartService()==>CreateIoCompletionPort()
StartService()==>m_QueueServiceThread.StartThread() //启动线程
游戏服务器流程:
入口:GmaeServiceDlg.cpp--->OnBnClickedStartService()==>m_ServiceUnits.StartService()
ServiceUnits.cpp--->StartService()==>StartKernelService() //启动内核:时间引擎、调度引擎、协调引擎、数据引擎m_RecordDataBaseEngine、数据引擎m_KernelDataBaseEngine、数据协调管理m_DBCorrespondManager
内核引擎--->网络引擎 StartService()==>CreateIOComleptionPort()
StartService()==>m_SendQueueService.StartService() //启动发送队列
内核引擎--->队列引擎 StartService()==>CreateIoCompletionPort()
StartService()==>m_QueueServiceThread.StartThread() //启动线程
异步引擎流程:
AsynchronismEngine.cpp--->StartService()==>m_MessageThread.StartThread() //启动线程
网络引擎流程:
TCPNetworkEngine.cpp--->StartService()==>CreateIOCompletionPort()
==>WSASocket()
==>bind()
==>listen()
==>m_SendQueueService.StartService() //发送队列
==>pServerSocketRSThread->InitThread() //建立读写线程
==>m_SocketAcceptThread.InitThread() //建立应答线程
==>pServerSocketRSThread->StartThread() //运行读写线程
==>m_SocketDetectThread.StartThread() //网络监测线程
==>m_SocketAcceptThread.StartThread() //运行应答线程
内核引擎--->队列引擎 StartService()==>CreateIoCompletionPort()
StartService()==>m_QueueServiceThread.StartThread() //启动线程
TCPSocketService.cpp--->StartService()==>m_QueueService.StartService() //队列服务开始服务
内核引擎--->队列引擎 StartService()==>CreateIoCompletionPort()
==>m_QueueServiceThread.StartThread() //启动线程