TCP是一种流式连接,对小包会进行封包缓存发送,大包会出现分包发送。接收端就会发现接收到的数据和发送的数据的次数不一致。这个就是粘包现象。
解决:
1、定长数据包(太理想)
2、使用特殊标记来区分消息间隔(字符数据可以,二级制数据不可行)
3、把消息尺寸与消息一并发送(目前最通用的做法是在每次发送的数据的固定偏移位置写入数据包的长度)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
TCP
+关注
关注
8文章
1344浏览量
78909
发布评论请先 登录
相关推荐
tcp_client例程为何去掉发送后,一直接收就会容易出现数据粘包呢?
/ portTICK_PERIOD_MS);}
代码如下,当我使用tcp_client例程,并且把发送数据注释掉,再接收数据就很容易出现TCP数据粘包,求助
[22:43:18.32
发表于 06-17 07:47
lwip tcp丢包的原因?
使用lwip协议栈,作为客户端应答2帧数据时,会有粘包问题,在tcp write 后调用tcp output没有效果,设置
#define TF_NODELAY((u8_t)0x40U
发表于 05-10 06:51
共享单车到底是什么通信原理
我们经常骑的共享单车到底是什么通信原理,有人了解过吗? 一、智能车锁 共享单车最核心的硬件是智能车锁,主要用于实现控制和定位功能。
发表于 04-09 10:33
•785次阅读
请问AD8603的电源供电范围到底是多少呢?
ADI官网上的数据手册给出的电源电压为1.8V-5V
但在ADI参考电路合集1中的AD8603采用15V电源供电
请问AD8603的电源供电范围到底是多少呢?
发表于 11-15 08:15
TCP粘包和拆包产生的原因
一、TCP粘包现象 what? TCP是个“流”协议,即没有边界。由于这个特性以及实际的网络情况,在进行数据传输时假设我们连续调用send分别发送两段数据data1和data2,在接收
评论