网络传输粘包的处理 博客分类: java
程序员文章站
2024-02-18 22:40:10
...
粘包产生的原因
1.发送端数据由于nagle算法,将多个业务数据包压成一个TCP包发送
2.接收端数据缓冲区读数据一次读入了多个包的数据
拆包产生原因:
1.发送端由于消息超过了MSS(最大报文段长度)限制大小被拆成多个TCP报文发送
2.接收端数据缓冲区一次读入了非整数个包的数据
处理粘包或者分包的策略基本就两种:
1.每个数据前后加特殊字符,比如ftp方式,这样方式容易出错,如果数据本身含有特殊字符就会发生分隔错误
2.业务数据加业务协议头标识业务数据的长度,在读取的时候能够确定向后读取数据的长度作为一个业务数据的边界
业务消息的可靠性
TCP协议保证了传输层的可靠性,如何保证业务处理层的可靠性?request-respone方式或者类似fix协议一样的业务层协议
推荐阅读
-
网络传输粘包的处理 博客分类: java
-
Java事件处理机制- 事件监听器的四种实现方式 博客分类: J2SE学习 JavaSwingGmailCC++
-
Java与Scala中的闭包 博客分类: 函数式语言 JavaScalajava7SQLJDK
-
Java与Scala中的闭包 博客分类: 函数式语言 JavaScalajava7SQLJDK
-
java中处理socket通信过程中粘包的情况
-
粘包处理现象及其解决方案——基于NewLife.Net网络库的管道式帧长粘包处理方法
-
分享java中处理socket通信过程中粘包情况的实例代码
-
分享java中处理socket通信过程中粘包情况的实例代码
-
粘包处理现象及其解决方案——基于NewLife.Net网络库的管道式帧长粘包处理方法