基于Socket的十六进制数据解析思路分析

本文介绍了基于Socket的十六进制数据解析思路,包括消息结构体、循环队列缓存和回调函数。解析过程中涉及客户端与服务器端的交互,通过定义消息类来存储信息,并实现接口进行编解码,包括基于文本和十六进制的编码方式。文本编码使用ASCII字符集,而十六进制编码则依赖魔术值和固定大小的消息结构。
摘要由CSDN通过智能技术生成

基于Socket的十六进制数据解析

数据解析的思路

基本思路

  1. 消息结构体,存储从缓存中解析的数据; buffer
  2. 回调函数,从缓存中解析数据时调用;
  3. 循环队列,用于缓存接收到的数据;
    关键实现:
  4. 把接收到的数据存储到缓存中,并准备解析;
  5. 递归解析消息

客户端和服务器端

  1. 首先定义一个类存放消息中包含的信息;是实体类;类中包括客户端和服务端的两种消息;
    或者客户端和服务端分开写两个实体类存放消息;

  2. 根据一定的协议对其编解码,定义一个interface,提供序列化和反序列化方法,
    (1)toWire()根据一个特定的消息,将消息转换成字节序列;
    (2)formWire()根据相同的协议,对给定的字节序列解析,根据信息的内容返回一个消息类的实例;

  3. 实现接口的两个类,一个基于文本的编码方式,一个基于十六进制的编码方式;

    • 基于文本的编码方式:
      使用ASCII字符集对文本进行编码,消息开头是一个字符序列,用于快速将协议的消息和网 络中随机的垃圾消息区分开;
      对射发送/接收消息的布尔值,是否为服务器发送响应消息,标记对射的ID,编码成十进制;
      (1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值