ExBuffer,NodeJs的TCP中的粘包、分包问题的解决方案!
推荐结合ByteBuffer来做通信协议!https://github.com/play175/ByteBuffer
C版本的ExBuffer:https://github.com/play175/exbuffer.c
var ExBuffer = ; /*************************基本操作****************************/ //构造一个ExBuffer,采用4个字节(uint32无符号整型)表示包长,而且是little endian 字节序var exBuffer = ;//或者构造一个ExBuffer,采用2个字节(ushort型)表示包长,而且是big endian 字节序 (默认)var exBuffer = ; //只要收到满足的包就会触发事件exBuffer; //传入一个9字节长的数据,分多次put (对应于TCP中的分包的情况)exBuffer;exBuffer;exBuffer; //传入一个3个字节的数据和一个6个字节的数据,一次put(对应于TCP中的粘包的情况)exBuffer; //大数据处理测试 (20MB)var exBuffer = ;exBuffer;var sbuf = 4;sbuf;//写入包长exBuffer;exBuffer; /*************************在socket中的应用****************************/ console; var net = ; //测试服务端var server = net;server; //服务端中映射客户端的类 { var exBuffer = ; exBuffer; socket; //当服务端收到完整的包时 { console; console; var data = 'wellcom, I am server'; var len = Buffer; //写入2个字节表示本次包长 var headBuf = 2; headBuf socket; var bodyBuf = len; bodyBuf; socket; }} //测试客户端var exBuffer = ;var client = net; client; //当客户端收到完整的数据包时exBuffer;
安装
npm install ExBuffer