关闭

网游服务器框架(1)Session

403人阅读 评论(0) 收藏 举报

因为不想去处理网络IO 所以偷懒直接使用了 libevent作为网络库。。(但是后果就是很多莫名其妙的bug无法明白。以后尝试替换

首先  每一个新连接 都会分配一个 SessionID 作为流水号增长。
相当于一个Client
然后统一放到一个Singlton的SessionManager里做统一处理 。使用map存储 SessionID作为key

每个Session都有一个接受数据缓存区。收到数据便往添加到缓存区尾部。然后尝试去parse一个包。
每个包包含

byte     字节序
int      全包长度 (包含字节序那1字节
short    客户端包序列
short    协议包类型
byte     协议版本
short    16位校验码
int      包数据长度
void*    包数据

其实每个包都带字节序有些多余。可以尝试在第一个包里确定。
解析后,将解析过的数据从缓存区中移除。
得到包后记录得到时间, 将包放到一个环形队列中,等待被执行。



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:32115次
    • 积分:720
    • 等级:
    • 排名:千里之外
    • 原创:42篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论