|
什么是粘包和拆包 粘包:多次发送的消息,客户端一次合并读取 Msg Msg=msgmsg
拆包:第一次完整消息+第二次部分消息组合 、第二次缺失的消息 Msg Msg=MsgM sg
粘包和拆包产生的原因 前提长连接、其次缓冲区
Tcp协议为了能够高性能的传输数据,发送和接受时候都会采用缓冲区,必须等待缓冲区满了以后才可以发送或者读取;
1.当我们的应用程序如果发送的数据大于了我们的套字节的缓冲区大小的话,就会造成了拆包。拆分成多条消息读取
2.当我们应用程序如果发送的写入的消息如果小于套字节缓冲区大小的时候,就会造成粘包。
3.接受端不够及时的获取缓冲区的数据,也会产生粘包的问题
4.进行mss(最大报文长度)大小的TCP分段,当TCP报文长度-TCP头部长度>mss的时候将发生拆包。
----------------------------
原文链接:https://www.jianshu.com/p/1837ab534b9a
程序猿的技术大观园:www.javathinker.net
[这个贴子最后由 flybird 在 2021-08-30 21:50:55 重新编辑]
|
网站系统异常
系统异常信息 |
Request URL:
http://www.javathinker.net/WEB-INF/lybbs/jsp/topic.jsp?postID=3863
java.lang.NullPointerException
如果你不知道错误发生的原因,请把上面完整的信息提交给本站管理人员。
|
|