自学内容网 自学内容网

C#实现数据采集系统-Tcp粘包处理

Tcp通信中会出现粘包的情况,Tcp数据不是完全一收一发,而是会将接收到数据存在一个接收缓冲区,等到调用接收的把数据从缓冲区取出来

大部分时候,我们收发消息频率不高,看上去就是发一条,收一条,完整数据;理论上,接收一次,是会出现各种情况,

粘包的几种情况

  1. 接收不完整一条数据,多次接收
  2. 接收到2条(或者N条)连在一起的数据
  3. 接收到1条(或者N条)完整加一条不完整的数据

示例:

比如 modbustcp响应报文,我们查询三次,正常是收到三条下面这样报文

1

00 01 00 00 00 05 FF 01 02 0A 02

2

00 01 00 00 00 05 FF 01 02 0A 02

3

00 01 00 00 00 05 FF 01 02 0A 02

情况1:不完整报文

每条都分开几次收到

1

00 01 00 00 00 05

FF 01 02 0A 02

2

00 01 00 00

00 05 FF 01 02 0A 02

3

00 01 00 00 00 05

FF 01 02

0A 02

情况2:粘连


原文地址:https://blog.csdn.net/qq_39427511/article/details/140694750

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!