默认
发表评论 1
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 求教关于MobileIMSDK中接收端TCP数据边界的处理(半包、粘包处理)
请教各位前辈。关于MobileIMSDK客户端。看发送的content都在头部加了长度。

如果这个content分了两个tcp包送达(第二个tcp包没有长度)或者因为通道质量问题这个长度在tcp包中间部分到达。这个时候MobileIMSDK怎么处理边界的 好像没看到相关代码?

注:iOS端TCP代码。另外udp包为什么不需要处理粘包问题 麻烦前辈们指导下。

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:[已回复] 服务端mobileimsdk如何集成到SpringBoot中下一篇:服务端启动后 MainGUI为空 mainGUI的初始化是在哪里进行的

本帖已收录至以下技术专辑

推荐方案
评论 1
从通信协议层来说,tcp本身是没有“包”这种概念的,它就像一条自来水管,数据就是源源不断的水流,协议本身并不知道水流里到底是哪一段到哪一段对应的是什么数据。至于要怎么进行分“包”,这是程序员人为定义的。

你说的,“或者因为通道质量问题这个长度在tcp包中间部分到达”,对于tcp来说,所有数据都是有序的,且保证送达,换句话说,如果有数据无法送达,则显示是网络出问题了,对于应用层了来说,读取出现异常就可以认为网络出问题了,直接进入断线和重传逻辑就好了。

而udp在协议这一层就是作为一个个固定数据长度的“包”进行分发,不需要程序员在应用层处理。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部