Skip to main content

固定长度数据处理适配器

一、说明

固定长度数据处理适配器是将发送的数据通过分割、填补的操作,以达到每次发送、接收的数据都是固定的长度来处理粘包、分包问题。这种方案一般适用于机械臂,机器人控制等场景。

二、特点

  1. 无论何时,发送与接收的数据长度永远为设定值。
  2. 算法简单,可以比较轻松的实现跨语言、跨框架。
  3. 一般适用于业务数据固定场景,

三、使用

客户端与服务器均适用。下列以服务器为例。

步骤

  1. TouchSocketConfig配置中设置,同时指定数据的长度。
  2. 通过Received(事件、方法、插件)中的ByteBlock读取数据(注意:数据长度是byteBlock.Len)。
TcpService service = new TcpService();
service.Received += (client, byteBlock, requestInfo) =>
{
//从客户端收到信息
string mes = Encoding.UTF8.GetString(byteBlock.Buffer, 0, byteBlock.Len);
};

service.Setup(new TouchSocketConfig()//载入配置
.SetListenIPHosts(new IPHost[] { new IPHost(7790) })
.SetDataHandlingAdapter(()=> { return new FixedSizePackageAdapter(10); }))//配置适配器,固定数据长度为10字节。
.Start();//启动
注意

接收的数据长度是byteBlock.Len,而不是byteBlock.Buffer.Length。

提示

该适配器,客户端与服务器均适用。