websocket 粘包问题_websocket数据过大

websocket 粘包问题_websocket数据过大websocket 底层使用的tcp 协议。 当一次发送数据过长时,tcp 会把数据封成多个包发送;同样当数据过短时,会把数据合并成一个包发送,这种现象就是粘包。粘包的情况也有可能是接收端造成的。[参考]( http://m.blog.csdn.net/duotemplar/article/details/73193038).tcp协议相关的知识百度之。 粘包出现必然对应拆包处理。处理

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 
websocket 底层使用的tcp 协议。 当一次发送数据过长时,tcp 会把数据封成多个包发送;同样当数据过短时,
会把数据合并成一个包发送,这种现象就是粘包。粘包的情况也有可能是接收端造成的。[参考] ( 
websocket 粘包问题_websocket数据过大http://m.blog.csdn.net/duotemplar/article/details/73193038 ).
tcp协议相关的知识百度之。 粘包出现必然对应拆包处理。处理方案:

eg: 现在通过websocket传输: A 数据, B数据 (只讨论粘包的情况) 


i 接收(应用层)AB数据


根据数据的帧信息,先解析A数据,然后解析B数据

ii 接收AB1、B2(B数据分成B1,B2)

解析A数据;根据B1的帧信息(包含数据是否完整、数据长度、数据类型等)可以判断不是完整数据,缓存B1数据;


继续接收数据B2,然后解析B1B2数据(不包含B1、B2的帧信息);

iii 接收A1、A2B (A数据分成A1,A2)

根据A1的帧信息可以判断不是完整数据,缓存A1数据;继续接收A2B数据,解析A1A2数据;然后解析B数据

iv 接收A1、A2B1、B2(A数据分成A1,A2 B数据分B1,B2)

缓存A1;解析A1A2;缓存B1;解析B1B2。


       
       以上只是大致的一个处理思路,实际代码中情况要复杂一些。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/169704.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python中替换字符串中字符_Python replace()函数:替换字符串中的某个字符「建议收藏」

    python中替换字符串中字符_Python replace()函数:替换字符串中的某个字符「建议收藏」下面我们将通过一组示例,详细给大家说明下关于用python的替换问题,相信大家结合实例一定非常容易理解,一起来看下吧~基础了解——replace()函数语法:str.replace(old,new[,max])参数:old–将被替换的子字符串。new–新字符串,用于替换old子字符串。max–可选字符串,替换不超过max次。返回值:返回字符串中的old(旧字符串)替…

  • 网络RTK无人机上机测试[通俗易懂]

    视频地址:https://v.qq.com/x/page/c0810tui04m.html这个视频描述的是网络RTK的特点与应用。4G网络RTK和电台RTK不同,电台RTK的纠偏数据发送基于一个单独的数传电台,也是市面上大部分的集成RTK的方案。用诺瓦泰,天宝或者司南,北斗星通的RTK板卡,外加数传电台和移动端来构成RTK系统。4G网络RTK是用4G网络来传输纠偏数据,达到厘米级定…

  • idea查看激活码_通用破解码

    idea查看激活码_通用破解码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项

    《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上。MyBatis提供了一级缓存、二级缓存这两个缓存机制,能够很好地处理和维护缓存,以提高系统的性能。本文的目的则是向读者详细介绍MyBatis的一级缓存,深入源码,解析MyBatis一级缓存的实现原理,并且针对一级缓存的特点提出了在实际使用过程中应该注意的事项。读完本文,你将会学到:1、什么是一级缓存?为什么使用一级缓存?2、MyBatis的一级缓存是怎样组织的?(即SqlS

  • win7安装vs2015失败_win10还是win7

    win7安装vs2015失败_win10还是win7错误日志:解决方法:1、把vs2008镜像文件下的\WCU\WebDesignerCore\WebDesignerCore.EXE手动解压到一个地方(注意解压出来的文件夹里面有个Office.zh-cn)2、找一个Office2007光盘或光盘镜像,找到Office.zh-cn文件夹,把该文件夹复制,然后覆盖到上一步解压中的Office.zh-cn中3、在第一步解压出来的文

  • Linux查看MySQL版本的四种方法

    Linux查看MySQL版本的四种方法1在终端下执行mysql-V2在help中查找mysql–help|grepDistrib3在mysql里查看selectversion()4在mysql里查看status欢迎补充~转自:https://www.linuxidc.com/Linux/2016-10/136075.htm…

    2022年10月27日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号