`
囧囧有神
  • 浏览: 204623 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

网络传输粘包的处理

    博客分类:
  • java
 
阅读更多

粘包产生的原因

1.发送端数据由于nagle算法,将多个业务数据包压成一个TCP包发送

2.接收端数据缓冲区读数据一次读入了多个包的数据

 

拆包产生原因:

1.发送端由于消息超过了MSS(最大报文段长度)限制大小被拆成多个TCP报文发送

2.接收端数据缓冲区一次读入了非整数个包的数据

 

处理粘包或者分包的策略基本就两种:

1.每个数据前后加特殊字符,比如ftp方式,这样方式容易出错,如果数据本身含有特殊字符就会发生分隔错误

2.业务数据加业务协议头标识业务数据的长度,在读取的时候能够确定向后读取数据的长度作为一个业务数据的边界

 

业务消息的可靠性

TCP协议保证了传输层的可靠性,如何保证业务处理层的可靠性?request-respone方式或者类似fix协议一样的业务层协议

分享到:
评论

相关推荐

    解决TCP网络传输粘包问题

    解决socket TCP网络传输粘包问题

    socket的粘包处理

    当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高...

    【QT】自定义协议解决TCP粘包和拆包问题

    本demo模拟了TCP通信中发送端和接收端的行为,并利用序列化和反序列化的思想,自定义协议来解决TCP的粘包和拆包问题。

    C#Socket 封装了Tcp/Udp传输字串、文件、对象

    1.封装了Tcp/Udp传输字串、文件、对象的细节,处理了Tcp粘包问题 2.测试代码设计原始Socket、TcpListener、TcpClient、UdpClient的使用 3.测试代码包括一个可以发送文本消息和发送文件的聊天室 4.设计网络通信、多...

    Python 基于Twisted框架的文件夹网络传输

    File:标识传输的文件名(相对路径) Folder:标志文件夹(相对路径) None:文件内容 每条命令以CMB_BEGIN开始,以CMB_END结束。 客户端需要对接收缓冲做解析,取出一条一条的指令,然后根据指令的Head做相应的处理...

    Linux网络编程 视频 教程

    粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、...

    北斗车载终端设备与平台通信协议(JTT808协议)高性能数据协议封包和解包库配合Bouyei.NetFactory.dll支持

    同时,库与Bouyei.NetFactory.dll集成,能够灵活地处理粘包和分包的情况,确保数据的正确传输和解析。通过这个高性能的数据协议封包和解包库,北斗车载终端设备与平台之间的通信变得更加高效和可靠。开发人员可以...

    C++教程网《Linux网络编程》视频百度云地址

    粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、...

    [免费]2018年C++教程网的linux网络编程视频百度云下载链接.rar

    粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、...

    ios 录音播放udp数据包传输过来的pcmData流

    一般的文章都会写pcm文件的播放 以及pcm文件的录音 我这里写的是一台手机录音 把采集到的pcm数据 ...说到了遇到网络卡该怎么处理 一点是要缓冲一段再播放, 另外一点就是加上空的静音包, 来保障音频的连续性。

    c++教程网的linux网络编程视频下载

    粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、...

    C++教程网视频:linux网络编程

    粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、...

    2018年C++教程网的linux网络编程视频共41集百度云下载链接.rar

    粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、gethostbyaddr 11...

    基于Linux前后台数据传输的聊天系统chat.zip

    需要有一定的网络基础,了解线程池模型与socket编程,本demo,有助于进一步加强对网络间通信的理解,其中涉及如何自定义数据包协议,避免粘包问题;如何采用心跳包机制,处理网络不通畅的问题等等技术手段,绝对是...

    linux网络编程

    per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射...

    网络无线侦察接收机软件系统的设计和实现

    本文在分析网络无线侦察接收机软件系统框架的基础上,结合wxWidgets库给出如何设计用户界面、如何利用wxMathPlot对接收到的数据进行画图、信号处理的基本方法,重点分析了如何解决网络接收数据时可能出现的“粘包”...

    socket通信

    基于MFC框架的socket网络通信,实现多个客户端与服务端的多对一的通信,同时进行数据传输时出现的“丢包”“粘包”问题的处理。

    Netty课程全部课件资料.rar

    十二个实例带你轻松掌握Netty 江...Netty的各种解码器,并利用解码器处理复杂繁琐的粘包/拆包 Netty集成第三方编码解码框架传输POJO对象 掌握Netty的异步处理任务和定时计划任务 掌握自定义业务线程池处理长耗时业务

Global site tag (gtag.js) - Google Analytics