游戏服务器之消息校验

游戏服务器之消息校验是为了防止外挂添加的检查。


设计上:

消息校验分为

1、长度校验

消息需要过滤长度过长的消息

2、消息标识检查

消息需要过滤不符合标识的

3、校验码校验

消息需要过滤校验码不正确的

4、消息编号校验

检查编号正确的才可以转发到场景服务器,否则就踢出该玩家。编号是从0开始,到65535就重新从0开始

消息头的信息

struct base_msg
{
	uint16 reserve;//保留字节(第15位是可用来标识是否压缩(0x4000))
	uint16 len;//长度(从消息头标识开始计算)
	uint16 base_flag;//消息头标识(某个固定的值)
	uint16 base_sum;//交验码
	uint16 base_index;//消息编号
	uint8 first;//一级系统指令
	uint8 second;//二级系统指令
	...
};


1、消息头过滤

分析检验正确的才派送,然后发送到场景进程

1、长度校验
大于1.5K,小于消息头长度的包都直接忽略 (ptNull 是消息指针, msglen 消息长度)
if (!ptNull || msglen< (MSG_HEAD_SIZE) || msglen >= 1536)
{
	error_log("外挂发来(帐号%s&#
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值