zoukankan      html  css  js  c++  java
  • 网狐棋牌服务器

    工厂模式的接口,仿com库模式实例化,异步调度引擎,对于棋牌卡牌游戏来说是个不错的开源项目,6603原始版本有内存泄漏,6701是某人扩展的修复版本,7.0.1是DIY项目,而对于开发的移动客户端,架构逻辑非常坑,应该不是同一个公司开发的,用于学习的话还行,商业化慎用.

    >构建网络、数据库管理服务

    >外部处理接口由用户二次开发

    blog:网狐相关

    blog:网狐学习

    blog:网狐服务器架构设计分析

    blog:整体框架分析

    blog:完成游戏流程

    blog:学习笔记

    blog:登陆服务器

     荣耀:登陆服务器

    登录服务器流程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()   //启动线程

  • 相关阅读:
    二分查找
    Android手机APN设置(中国移动 联通3G 电信天翼),解决不能上网的问题
    cocos2dx 3.1从零学习(三)——Touch事件(回调,反向传值)
    Groovy新手教程
    总结一下用caffe跑图片数据的研究流程
    JAVA数组的定义及用法
    开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
    LeetCode——Reverse Words in a String
    oracle 库文件解决的方法 bad ELF interpreter: No such file or directory
    布局文件提示错误“No orientation specified, and the default is horizontal. This is a common so...”
  • 原文地址:https://www.cnblogs.com/tomatokely/p/8927630.html
Copyright © 2011-2022 走看看