• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:再聊tio网络编程架构的基础知识半包和粘包

java 搞代码 3年前 (2022-01-27) 25次浏览 已收录 0个评论

半包
顾名思义,就是收到了半个包,这个时候不足以组成一个应用层的包。就像你要对你喜爱的人说“我喜爱你”,然而因为喝水咽着了,第一次只说了“我”字,第二次说了个“喜”字,第三个次了个“欢你”,那么就产生了半包问题,对方只有期待你说完这4个字后才晓得你是想说“我喜爱你”!

用http协定为例,展现半包场景

粘包
粘包与半包相同,就是把多个想说的话,一口气说完了,对方反馈不过去,得把你的话拆开一条一条地了解

用http协定为例,展现粘包场景

阐明:http协定是一来一回的,所以失常场景是不会有粘包的,但pipeline模式下是容许一方间断发多个申请的,所以会有粘包产生
为何坑人有数
初涉网络编程的同学,往往认为每次收到的数据刚好是一个残缺的数据包

于是当网络不好,或是音讯包过大时,半包的状况就产生了,而程序并没有思考到半包的状况,后果就是解码失败,导致音讯失落

当通信的对方把多条业务数据包放在一个TCP包中发过来时,粘包就产生了,而程序没有思考到一次TCP收包会收到多个业务包,从而解析到第一个业务包后把前面的业务包抛弃了

百度一下半包粘包,肯定会搜到很多记录,这也证实这俩货的确坑人有数,所以看完本节内容,你还会持续犯半包粘包的错吗?

具体请参考:https://www.tiocloud.com/doc/tio/84


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:再聊tio网络编程架构的基础知识半包和粘包
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址