文档章节

NodeJs的TCP中的粘包、分包问题的解决方案!

-西门吹牛
 -西门吹牛
发布于 2017/04/06 09:03
字数 262
阅读 50
收藏 0
点赞 0
评论 0

StickPackage,https://github.com/lvgithub/stickPackage  NodeJs中TCP粘包、分包解决方案!配置介绍提供对TCP粘包处理的解决方案默认缓冲512个字节,当接收数据超过512字节,自动以512倍数扩大缓冲空间本默认采用包头两个字节表示包长度默认采用大端接模式接收数据可以配置自定义包头长度[后期迭代]可以配置大端小端读取[后期迭代]

源码地址:https://github.com/lvgithub/stickPackage

使用方法

var Stick = require('./stickPackage');

let stick = new Stick();

// 设置收到完整数据触发器
stick.onData(function (data) {
console.log('receive data,length:' + data.length);
console.log('receive data,contents:' + JSON.stringify(data));
});

// 构造一个buffer,包含两个数据包,10个字节
let bytes = Buffer.from([0x00, 0x02, 0x66, 0x66, 0x00, 0x04, 0x88, 0x02, 0x11, 0x11]);
console.log('log:传入两个包,一次Put[验证一次性Put数据包]');

// 处理粘包
stick.putData(bytes);

// 结果显示
// receive data,length:4
// receive data,contents:{"type":"Buffer","data":[0,2,102,102]}
// receive data,length:6
// receive data,contents:{"type":"Buffer","data":[0,4,136,2,17,17]}

 

© 著作权归作者所有

共有 人打赏支持
-西门吹牛
粉丝 0
博文 1
码字总数 262
作品 0
Node.js 中 TCP 粘包、分包解决方案 - Stick

StickPackage,NodeJs 中 TCP 粘包、分包解决方案! 配置介绍 提供对TCP粘包处理的解决方案 默认缓冲512个字节,当接收数据超过512字节,自动以512倍数扩大缓冲空间 本默认采用包头两个字节表...

匿名
2017/10/11
55
0
Socket/WebSocket应用及IM粘包 分包等

> Socket/WebSocket应用 WebSocket的frame?google的protobuf在IM中的使用? IM、金融、股价、视频会议等这样一些应用来说,所需要的不过是高实时、低延时。比较好的可选方案呢?比较流行的是...

shareus
04/28
0
0
TCP通信中的粘包问题

TCP通信中的粘包问题 尹德位 2015 西安 关键词 : TCP 网络通信 粘包 Linux C/S 一 粘包问题概述 二 粘包回避设计 第一章 粘包问题概述 1.1 描述背景 采用TCP协议进行网络数据传送的软件设计...

cnyinlinux
2015/11/29
422
3
JAVA网络编程:解决TCP网络传输“粘包”问题

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

HenrySun
2016/07/23
435
0
解决TCP网络传输“粘包”问题

作者:杨小平 王胜开原文出处:http://www.ciw.com.cn/ 当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和U...

扶殊88
2011/12/08
0
1
Netty解决TCP的粘包和分包(一)

Netty解决TCP的粘包和分包(一) 关于TCP的粘包和分包:http://my.oschina.net/xinxingegeya/blog/484824 Netty分包 分包的解决办法: 1、消息定长,报文大小固定长度,不够空格补全,发送和...

秋风醉了
2015/07/29
0
0
TCP粘包, UDP丢包, nagle算法

一、TCP粘包 1. 什么时候考虑粘包 如果利用tcp每次发送数据,就与对方建立连接,然后双方发送完一段数据后,就关闭连接,这样就不会出现粘包问题(因为只有一种包结构,类似于http协议,UDP不会...

Playboy002
2015/09/14
891
0
Java Socket技术总结

1 Socket通信原理 1.1 ISO七层模型 1.2 TCP/IP五层模型 应用层相当于OSI中的会话层,表示层,应用层。 区别参考:http://blog.chinaunix.net/uid-22166872-id-3716751.html 1.3 TCP报文 (1...

一贱书生
2016/11/10
7
0
关于这几天使用IOS的ASYNCSOCKET完成无限后台的过程

  这几天用了下ASyncSocket完成前后台即时通讯,当时有想过用消息推送的技术实现的,可是后来想到消息推送的不可靠性还是算了。于是使用了tcp/ip实现后台主动发送数据给前台的功能。 最开始...

嘻哈开发者
2014/06/18
3.3K
1
Socket的半包,粘包与分包的问题

首先看两个概念: 短连接: 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 也可以这样说:短连接是指SOCKET连接后发...

ksfzhaohui
2012/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(转)SQL语句的执行顺序

(7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_type> JOIN <right_table> (2) ON <join_condition> (4) WHERE <where_condition> (5) GROUP BY <group_by_list> (......

Avner
10分钟前
0
0
1.14 救援模式

确保开机启动时连接镜像文件,如果是真机服务器,就需要:U盘或光盘镜像启动进入BIOS 不同主板进入bios按键不同,一般是F12或Esc 光标:移动到Boot(开机启动项) 减号移动:光标选中行,按-...

小丑鱼00
18分钟前
0
0
ES11-全文检索

高级别全文检索通常用于在全文本字段(如电子邮件正文)上运行全文检索。 他们了解如何分析被查询的字段,并在执行之前将每个字段的分析器(或search_analyzer)应用于查询字符串。 1.term查...

贾峰uk
21分钟前
0
0
java 复制对象有哪些方式

java 复制对象有哪些方式 Apache的 Common beanutils库 org.apache.commons.beanutils.BeanUtils.copyProperties(dest,origin); Springframework 的BeanUtil 依赖: <dependency> ......

黄威
37分钟前
1
0
jstack的简单使用

公司测试反应, 一个java应用的机器, 即使不做交易, cpu始终是30%多, 于是想到了jstack, 实践步骤记录一下: 1, 找出java应用的进程号 ps -ef|grep 应用名|grep -v grep 2, 找出pid下的cpu占用...

零二一七
43分钟前
1
0
崛起于Springboot2.X之项目war打包部署(18)

将springboot项目打包步骤: 1、启动类 extends SpringBootServletInitializer 2、启动类添加覆盖方法 @Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder......

木九天
52分钟前
2
0
导入CSV文件就行数据整理分析

#-*-coding:utf-8-*-import csv,os,re,mathlocalPath=input("请输入所有群文件的根目录:") #所有QQ群文件的物理根目录路径def info(): info_dic=[] dirList=os.listdi...

Kefy
58分钟前
5
0
CoreText进阶(六)-内容大小计算和自动布局

CoreText进阶(六)-内容大小计算和自动布局 其它文章: CoreText 入门(一)-文本绘制 CoreText入门(二)-绘制图片 CoreText进阶(三)-事件处理 CoreText进阶(四)-文字行数限制和显示更...

aron1992
今天
1
0
一个Unity高人的博客,涉猎范围很广,深度也很深。

https://blog.csdn.net/ecidevilin/article/list/

爽歪歪ES
今天
0
0
Spring Cloud Config-Git后端

EnvironmentRepository的默认实现使用Git后端,这对于管理升级和物理环境以及审核更改非常方便。要更改存储库的位置,可以在Config Server中设置“spring.cloud.config.server.git.uri”配置...

itcloud
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部