最近看游戏源码,对于大一点的源码,完全不知道怎么开始,太庞大了,网狐的源码都达到了1G多了,vc6.0打开直接卡死,不得不说vs2010还是很不错的。大的源码看不懂,最后去看最小的源码,传奇服务端源码。

1.找到winmain函数(GameSvr.cpp),InitApplication()函数注册窗口回调函数MainWndProc(MainWndProc.cpp). InitInstance()函数主要对窗口编程。

2.开启服务     回调函数调用OnCommand(),创建了一个线程InitializingServer;在线程里面调用ConnectToServer()函数。ConnectToServer()里面将监听套接字(没看全局变量,推测的)注册到窗口回调函数里面,消息的ID为:_IDM_CLIENTSOCK_MSG然后,自己连接这个服务器,到此ConnectToServer()函数结束。

3.由于上一步,收到了_IDM_CLIENTSOCK_MSG,窗口函数调用OnClientSockMsg()。这个函数里面创建了ProcessLogin、ProcessUserHuman、ProcessMonster、ProcessNPC线程,然后通过调用InitServerSocket创建CreateIOCPWorkerThread完成端口。继续调用InitThread创建AcceptThread线程,OK到此程序基本框架搭建起来了。CreateIOCPWorkerThread里面创建了完成端口工作者线程ServerWorkerThread。

到此服务器的基本架构搭建起来了。

直接看图吧,思路清晰一些。

传奇源码分析---框架相关推荐

  1. 传奇源码分析-客户端(传奇2和3 文件格式分析比较)

    贴这个贴子,希望大家少走弯路.网上下载的那个版本应该是从传奇2改的,传奇3的格式.分析一下源码吧,g_xLoginProc.Load(); 之后就加载m_Image.NewLoad(IMAGE_INT ...

  2. 传奇源码分析-客户端(全局变量与总体执行流程)

    客户端: 传奇的客户端源代码有两个工程,WindHorn和Mir2Ex. 先剖析一下WindHorn工程. 1. CWHApp.CWHWindow和CWHDXGraphicWindow.Window程 ...

  3. 传奇源码分析-客户端(游戏逻辑处理源分析四)

    现在假设玩家开始操作游戏: 传奇的客户端源代码工程WindHorn 一.CWHApp派生CWHWindow和CWHDXGraphicWindow. 二.CWHDefProcess派生出CloginPr ...

  4. hadoop之MapReduce框架TaskTracker端心跳机制分析(源码分析第六篇)

    1.概述 MapReduce框架中的master/slave心跳机制是整个集群运作的基础,是沟通TaskTracker和JobTracker的桥梁.TaskTracker周期性地调用心跳RPC函数,汇 ...

  5. Spark RPC框架源码分析(二)RPC运行时序

    前情提要: Spark RPC框架源码分析(一)简述 一. Spark RPC概述 上一篇我们已经说明了Spark RPC框架的一个简单例子,Spark RPC相关的两个编程模型,Actor模型和Re ...

  6. Python微型Web框架Bottle源码分析

    Bottle 是一个快速,简单和轻量级的 WSGI 微型 Web 框架的 Python.它作为单个文件模块分发,除了 Python 标准库之外没有依赖关系. 选择源码分析的版本是 Release 于 ...

  7. Linux驱动修炼之道-SPI驱动框架源码分析(上)

    Linux驱动修炼之道-SPI驱动框架源码分析(上)   SPI协议是一种同步的串行数据连接标准,由摩托罗拉公司命名,可工作于全双工模式.相关通讯设备可工作于m/s模式.主设备发起数据帧,允许多个从设 ...

  8. Nmap源码分析(基本框架)

    Nmap是一款非常强大的开源扫描工具.自己在使用过程中忍不住想仔细阅读一下它的源码.源码里面汇集了众多安全专家的精巧设计与优雅写法,读起来令人心旷神怡而又受益匪浅. 这里我们以阅读nmap6.0的代码 ...

  9. 【OkHttp】OkHttp 源码分析 ( 网络框架封装 | OkHttp 4 迁移 | OkHttp 建造者模式 )

    OkHttp 系列文章目录 [OkHttp]OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) [OkHttp]Android 项目导入 OkHttp ( 配置依赖 | 配置 ...

  10. 缓存框架OSCache部分源码分析

    在并发量比较大的场景,如果采用直接访问数据库的方式,将会对数据库带来巨大的压力,严重的情况下可能会导致数据库不可用状态,并且时间的消耗也是不能容忍的,尤其对于某些获取起来比较昂贵的数据.在这种情况下, ...

最新文章

  1. ubuntu clion 创建桌面快捷方式
  2. 阿里从来不只属于马云,但马云会永远属于阿里
  3. 通过WebRTC实现实时视频通信(三)
  4. Nancy简单实战之NancyMusicStore(二):打造首页
  5. uva 11991 (map vector 嵌套)
  6. CentOS安装rpm包时遇到Header V3 DSA signature: NOKEY时解决办法
  7. 开源 免费 java CMS - FreeCMS1.5-数据对象-job
  8. 珍藏40个android应用源码分享
  9. 全球 42 亿 IPv4 地址宣告耗尽!
  10. php关联微信支付宝,php实现微信和支付宝支付
  11. 申请 GoDaddy SSL 证书
  12. C语言怎么用char输出多个字母,c语言中char类型如何存放多个字符
  13. Fatal error in launcher:解决
  14. 关于 C++ 打印 PDF 打印及 PDF 转图片、合并
  15. AtCoder Beginner Contest 190 D - Staircase Sequences
  16. 女生自写的感想 ...男孩如何追女孩...(转载)
  17. 【汇智学堂】-div+css布局十二(商品列表图文展示)
  18. ubuntu18.04使用xrdp远程连接
  19. 微信小程序实例:image组件的binderror事件处理
  20. ELK实践(一)使用es搭建商品搜索项目

热门文章

  1. Tcp网络通信中各个状态的含义
  2. algorithm negotiation fail错误
  3. 【22/04】Chrome 里的请求报错 “CAUTION: Provisional headers are shown“ 是什么意思?
  4. Docker端口映射实例
  5. Docker端口映射不起作用的解决办法
  6. 威斯康星麦迪逊计算机专业排名,威斯康星大学麦迪逊分校计算机工程学科排名...
  7. 高中补习数学:导数与函数的综合问题(2019年测试题)
  8. Android 面试自我介绍
  9. 1、51单片机——郭天祥课后习题解答
  10. Quartus 在工具栏设置功能快捷方式