传世基本架构-Rungate源代码分析笔记。

RunGate采用生产者消费者模型,由三个Socket对象构成,主要处理与M2和客户端的通信。核心逻辑在于消息处理,接收到客户端消息后直接转发给M2,而M2发回的消息需要经过编码处理再发送给客户端。代码结构不清晰,且使用Timer处理消息而非线程。RunGate会定时发送保活包以检查连接状态。在设计上,解密工作落在M2上,而理想情况是游戏网关应负责加解密。建议优化为单线程处理,以提高资源利用率和系统效率。

RunGate有三个Socket对象  一个向M2发送  一个接收客户端的连接。还有一个连接控制台(当然这个是和控制台绑定的通常手动启动是不需要的 只是在私服这方面方便私服架设      者使用)

   控制台Socket会每隔一段时间向控制台发送保活包。如果没有发送 那么控制台肯定是知道rungate没反应了或者被关闭了 然后可以立马又开启。纯粹是为了私服假者简单而考      虑。

  实际只有2个Socket对象才是最主要的。M2Sokcet和ClientSocket。

  整个结构当然是使用的典型生产者消费者模型。 但是代码结构很不清晰.而且消息的处理是使用Timer来处理,而不是线程。

 程序在通过一个常量定义了在栈上的会话数量。当程序开始运行会 在栈上有一个数组 保存会话信息。  会话信息是一个结构体,内部记录了会话的信息,比如连接时间,封包大小

 以及 上次移动时间 上次通讯时间等等。

 当有客户端连接时候。会在预分频的数组内找到一个未使用的空间。初始化这个数组的内容 将当前的客户端连接保持在这个会话之内。

 当收到客户端的信息时候,会进行一系列合法的验证 或者保护。最终将消息生成一个消息体:

ReviceMsgList.Add(UserData); //加入收到的消息列表内。

 收收到服务端的消息的时候。将消息头部 转换成如下消息格式:

TMsgHeader = packed record

d

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大龙软件研发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值