关于tcp粘包的处理
来源:互联网 发布:吴昕淘宝店叫什么 编辑:程序博客网 时间:2024/04/27 21:01
tcp流没有界限,就会出现所谓的粘包。一般处理粘包问题的有三种方法:
1、包固定长度。
2、使用标志位区分包与包之间的连接
3、发送包之前,先发送包长度(包长度为固定字节)
方法1:每次发送都发送固定长度的包,如果最大包和最小包之间差别太大,降低了网络发送效率。
方法2:使用标志位区分包与包之间的连接,就需要对包的内容进行分析,对包内容中和标志位一样的数据进行一些特殊处理,影响应用程序的效率
方法3:发送包之前发送固定字节的长度。避免了以上两种问题。
但是方法1和方法3都存在一个隐患,虽然说几率很小,但是如果收到其中一个包长度不对,那么后面所有的包都不对。对这个,我想了一个方法,方法2和方法3的组合,包结构为 包长度+包内容+标志位(不需要处理包内容中和标志位一样的数据) 读完包的时候判断下,标志位对不对,如果不对,可以进行两个处理,清空这个socket在应用程序中的缓存 或者是找到这个标志位在缓存中的位置,清空标志位以前的缓存。
0 0
- 关于tcp粘包的处理
- 关于TCP粘包和半包的处理
- TCP粘包处理
- tcp粘包的处理(待完成)
- TCP新手误区--粘包的处理
- 关于TCP的粘包问题
- 关于TCP粘包的问题简述
- tcp中的粘包、半包的处理方法
- socket中tcp的断包、粘包处理方法
- tcp粘包和拆包的处理方案
- tcp粘包和拆包的处理方案
- tcp粘包和拆包的处理方案
- socket TCP 处理粘包
- 处理tcp粘包问题
- tcp 粘包处理 TCP_NODELAY
- golang tcp粘包处理
- tcp 粘包,碎包处理 test
- 【Python】TCP Socket的粘包和分包的处理
- 单例模式读取配置文件到内存中
- 如何删除MyEclipse中已经配置好的Struts2
- POJ 2083 Fractal 递归画分形
- qt操作oracle数据库查看错误方法
- android的资源
- 关于tcp粘包的处理
- Windows Server 2008防火墙问题及Sql Server2005用户登录问题
- OpenCV实现人脸检测
- MySQL 5.6 GTID模式的主从复制
- javascript面向对象编程(二)
- Linux文件管理背景知识
- wait和waitpid函数详解
- LBS在银行业的应用:掌控天下,融会贯通
- 我的助理辞职了!