TCP中粘包/分包问题

本文介绍了TCP协议中的粘包和分包现象,详细解释了两者的概念。粘包是指发送的琐碎数据被组合成大数据一次性接收,而分包则是在发送大数据时拆分成多个小数据发送,导致接收方多次接收。在异步环境下进行了演示,并提出了在游戏开发等场景中如何解决这类问题,通过设定固定长度的数据接收和处理策略来确保数据的正确处理。
摘要由CSDN通过智能技术生成


我们在使用TCP协议进行数据的传输时,会出现粘包与分包,只是由于内部的优化机制所导致的。
换句话说:
粘包与分包是以用Socket在TCP协议下内部的优化机制

1 什么是粘包

例如我们在向服务器传输数据时, 尤其是在频繁的发送一系列琐碎数据时,系统不会立马将消息发送到服务器端,而是会将这些琐碎细小的数据进行粘念结合,形成一个大数据后,才会发送给服务器端。
此时的服务器端只会调用一次receive方法然后一次性接受多个数据的整合

2 什么是分包

了解了粘包,就很容易理解分包了。
当我们一次性发送一个超大数据的时候。这时候系统就会对这条数据进行分包,将这条超大数据拆分成多个小数据进行发送。
在传输过程中,当发送失败进行重新发送时,大数据不仅占用时间,还占用网速。
此时,服务器端就不会像粘包一样只调用一次receive。若拆分成了十个小数据,则会调用10次receive方法

3 分包与粘包问题的演示

3.1 粘包

 for(int i = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值