• 网狐棋牌服务器


    工厂模式的接口,仿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()   //启动线程

  • 相关阅读:
    产品开发管理之流程和体系(总篇)
    .NET Core工程编译事件$(TargetDir)变量为空引发的思考
    EF Core新增迁移时无法加载程序集“System.ValueTuple”的错误
    Magicodes.Admin.Core开源框架总体介绍
    在WIN SERVER 2016上安装DOCKER(带过坑)
    使用NPOI生成Excel级联列表
    使用批处理根据项目工程文件生成Nuget包并发布(支持.NET Core)
    C#反射
    Oracle创建库
    深入了解MyBatis参数
  • 原文地址:https://www.cnblogs.com/tomatokely/p/8927630.html
Copyright © 2020-2023  润新知