游戏基础框架搭建(一)

网络框架

Posted by MagicianJoker on November 1, 2020
  1. 建立Socket链接
    • IP地址,端口
  2. 消息协议

  3. 消息缓存
  4. 消息监听分发移除
  5. 客户端身份验证
  6. 心跳包

(1)轮询机制

服务器端定时主动与客户端通信,询问当前状态,客户端返回状态信息,如果客户端没有返回,则认为客户端掉线,反之则为正常状态

(2)心跳机制

客户端定时主动访问服务器,更新自身状态,如果客户端超过指定时间没有来更新状态,则认为客户端掉线,反之为正常

心跳比起轮询的优势

1.避免了服务器的压力

2.灵活好控制

  • PB与字节流的互转。序列化和反序列化处理
  • 协议包的组成
  • 网络的发送以及接收方式。 异步、多线程
  • 拆包、粘包

​ 数据缓存,动态扩容处理

​ Array.Copy、Buffer.BlockCopy区别

  • 协议派发
  • 大小端
  • 加解密

断线重连

超时处理

  • ES(Enter Server)
  • ZLS(Zone List Server)
  • GS(Game Server)

TCP

UDP

http

KCP(稳定的UDP传输)

基于TCP+Protobuf的网络解决方案

发送数据包

  • 包头和包体,包头为4字节int的数据长度加IMessage包体
  • 包体长度+(协议id+协议内容)字节加密,Pack为一个完整的包体内容

接受数据包

  • 拆解包 字节的一个缓存cache,取长度为4,转换为数据长度,