区分各种消息
一、现实意义
- 抛出问题: 当将序列化的2进制数据发送给对象时,对方如何区分?
- 举例: PlayerInfo:玩家信息 ChatInfo:聊天信息 LoginInfo:登录信息 等等 这些数据对象序列化后是长度不同的字节数组 将它们发送给对象后,对方如何区分出他们分别是什么消息 如何选择对应的数据类反序列化它们?
二、解决方法
- 解决方案: 为发送的信息添加标识,比如添加消息ID 在所有发送的消息的头部加上消息ID(int、short、byte、long都可以,根据实际情况选择)
- 举例说明: 消息构成 如果选用int类型作为消息ID的类型 前4个字节为消息ID 后面的字节为数据类的内容 ####*************** 这样每次收到消息时,先把前4个字节取出来解析为消息ID 再根据ID进行消息反序列化即可
三、实现思路
- 创建消息基类,基类继承BaseDatd,基类添加获取消息ID的方法或者属性
- 让想要被发送的消息继承该类,实现序列化反序列化方法
- 修改客户端和服务端收发消息的逻辑