websocket传输数据大小限制_WebSocket传输超过126字节数据的方法
之前用Java的Socket模拟HTTP传输实现了WebSocket的服务端,并成功与客户端握手
但是有个问题,就是从Server传输数据超过126字节就不行,连接自动断开还报错InputStream in=socket.getInputStream();
OutputStream out=socket.getOutputStream();
byte[] buff=new byte[3072];
int hasRead=0;
while((hasRead=in.read(buff)>0){
byte[] pushHead=new byte[2]; //在传递数据前要传递这个数据头
String x="要传输的数据......";
pushHead[0]=buff[0]; //数据头数组的第一个字节是接收到的数据的第一个字节
//第二个字节是要传输数据的字节数组长度转化成的字节
pushHead[1]=(byte)x.getBytes("UTF-8").length;
out.write(pushHead); //先传递数据头
out.write(x.getBytes("UTF-8"); //再传递数据
}
上面的代码在传递的数据转化成的字节数组长度小于126时是OK的,但是>=126时就报错。
因为字节的范围是-128~127,所以传输数据长度大于125就报错
那就要另外的处理方法
传输跟据数据长度分三种情况,即有三种范围小于126,那么上面的代码就OK了
大于125 小于65536 那么数据头的第二个字节存的是(byte)126,第三第四个字节存的是数据长度
大于65535 数据头第二个字节存的是(byte)127,后面再有8个字节存数据长度
这样说过于平面,看代码吧(代码也是平面的好不 (╯°Д°)╯( ┻━┻ )
InputStream in=socket.getInputStream();
OutputStream out=socket.getOutputStream();
byte[] buff=new byte[3072];
int hasRead=0;
while((hasRead=in.read(buff)>0){
byte[] pushHead; //在传递数据前要传递这个数据头
String x="要传输的数据......";
int length=x.getBytes("UTF-8").length;
if(length<126){
pushHead=new Byte[2];
pushHead[0]=buff[0]; //数据头数组的第一个字节是接收到的数据的第一个字节
//第二个字节是要传输数据的字节数组长度转化成的字节
pushHead[1]=(byte)x.getBytes("UTF-8").length;
out.write(pushHead); //先传递数据头
}
else if(length>125 && length<65536){
pushHead=new Byte[4];
pushHead[0]=buff[0];
pushHead[1]=(byte)126;
pushHead[2]=(byte)((length>>8) & 0xFF);
pushHead[3]=(byte)(length & 0xFF);
out.write(pushHead);
}
else if(length>65535){
pushHead=new Byte[4];
pushHead[0]=buff[0];
pushHead[1]=(byte)127;
pushHead[2]=(byte)((length>>56) & 0xFF);
pushHead[3]=(byte)((length>>48) & 0xFF);
pushHead[4]=(byte)((length>>40) & 0xFF);
pushHead[5]=(byte)((length>>32) & 0xFF);
pushHead[6]=(byte)((length>>24) & 0xFF);
pushHead[7]=(byte)((length>>16) & 0xFF);
pushHead[8]=(byte)((length>>8) & 0xFF);
pushHead[9]=(byte)(length & 0xFF);
out.write(pushHead);
}
out.write(x.getBytes("UTF-8"); //再传递数据
}
这样大一些的数据也能一次传了,原先只能传不超过126字节数据时,要把数据分割分批传递,客户端接收后再组装或其它方式处理。不过目前只试了字符串的传输,还没试过图片,回头试试
websocket传输数据大小限制_WebSocket传输超过126字节数据的方法相关推荐
- websocket传输数据大小限制_websocket 发送字符串数据上限是多少
匿名用户 1级 2017-06-07 回答 网上很多关于websocket发送数据大于大于0xFFFF(65535)的处理都是一句话"暂不处理"!!!!!所以特写此文. int W ...
- websocket传输数据大小限制_websocket设置传输大小
tomcat中有提到: If the application does not define a MessageHandler.Partial for incoming text messages, ...
- websocket传输数据大小限制_WebSocket基础知识笔记
一.为什么需要 WebSocket? 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很简单,因为 HTTP 协议有 ...
- 蓝牙学习笔记(九)——BLE超过20字节数据包传输(MTU)
前言:在默认情况下,BLE 支持传输一次性最大不超过20字节的数据包,但是很多应用场景下,往往会需要传输更多数据.下面说下如何进行一些修改,使之能够传输更大数据. 实验环境: 客户端:nRF Conn ...
- websocket传输数据大小限制_踩踏websocket:发送缓冲区大小超过允许的限制
在客户端我使用Stomp进行websocket连接,服务器端使用 Spring 4 客户端我做了配置 var socket = new SockJS(urlBase + "/" + ...
- websocket中发生数据丢失_Websocket传输可靠性(重新连接时Socket.io数据丢失)
其他人在其他答案和评论中暗示了这一点,但根本问题是Socket.IO只是一种传递机制,你不能单独依靠它来实现可靠的交付 . 唯一确定消息已成功传递给客户端的人 is the client itself ...
- netty udp接收超过2048字节数据
默认netty udp接收DatagramPacket字节数最大是2048,如果数据大,超过这个限制,就会报错,抛出异常,虽然这个包解析失败,不会影响其他包的解析,但是总得来说,这种失败是不利于数据收 ...
- oracle xmltype转字节,extractvalue处理XMLTYPE类型超过4000字节ORA-01706的解决方法
extractvalue处理XMLTYPE类型超过4000字节ORA-01706的解决方法 发布时间:2020-08-14 15:40:17 来源:ITPUB博客 阅读:226 作者:guocun09 ...
- 【FAQ】【HarmonyOS】鸿蒙java开发关于蓝牙通信api的传输数据大小设置
[问题描述] 在使用BlePeripheralDevice类的writeCharacteristic方法向蓝牙传输数据,如果数据长度长一点,通过串口工具发现蓝牙设备端是会分包接受数据的各个部分,那么鸿 ...
- FAILED BINDER TRANSACTION (Android Binder传输数据大小限制)
Android源代码中大小设置 http://androidxref.com/9.0.0_r3/xref/frameworks/native/libs/binder/ProcessState.cpp# ...
最新文章
- SQL数据库常见故障及解决方法
- python中remove函数是什么意思,python中pop函数和remove函数有什么区别
- 用python绘制柱状图标题-如何用Python绘制3D柱形图
- WEB前端--HTML
- tp5某个字段相同的数据只取一次_多维分析数据仓库建设建议-面向主题的建模...
- 苹果风格ui_苹果如何使Soft-UI成为未来
- LeetCode MySQL 626. 换座位
- next.js 无法导出及导出图片无法加载等问题
- webView图片点击可以实现预览效果
- SVN客户端安装与使用
- VBA实战技巧精粹018:如何汇总数据
- 计算机考试多选试题及答案,计算机中级职称考试试题及答案 [2018职称计算机考试WPS_Office多选试题及答案]...
- 《ARM体系结构与编程》中的严重错误
- CSI-RS接收流程
- 微软bing搜索引擎疑似被屏蔽 国内多地无法访问
- 数据库连接报错 Communications link failure 连接失败解决办法
- 元宇宙系列之AI虚拟人:“人”潮汹涌 探路未来
- 小米pro加装固态硬盘以及拆机方法
- 产品经理(Product Manager)相关英文术语
- 解决Past duration X.XXXX too large警告
热门文章
- 钓鱼网站制作 ---- Setoolkit 克隆web页面钓鱼
- 计算机页码格式罗马数字,word 页码 罗马数字怎么从1开始
- 南京大学2019计算机学院复试名单,南京大学计算机科学与技术系2019考研复试名单...
- word文字上下间距怎么调_word上下文字间距 word字体上下间距怎么调整
- 大数据:大一整年感悟及总结
- 在浏览器连接linux服务器,使用浏览器连接Linux服务器
- c语言汉字属于什么类型_【C语言】必学知识点 - 基本数据类型!你学会了吗?...
- 按键消抖(并联0.1uf电容)
- 对事件流的小故事理解
- SAR图像去噪方法研究