- 建立Socket链接
- IP地址,端口
-
消息协议
- 消息缓存
- 消息监听分发移除
- 客户端身份验证
- 心跳包
(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,转换为数据长度,