NodeJS缓冲区分割,string和二进制
我有3个信息需要发送一个UDP数据包,userID(int),authentication码(string)和二进制数据。
我将如何能够立即发送这些项目,并能够在另一端拆分它们。
我已经尝试连接三个缓冲区的信息,但不能想办法在另一端拆分它们,因为UID和授权码的长度会有所不同。
假定以下适用
- 用户ID – 无符号的32位整数
- authentication码 – 一些string让我们说100个字符的长度
- 二进制数据 – ..
填料
var BinaryData=/*Your binary data*/; var bufToSend = new Buffer(3+100+BinaryData.length); bufToSend.writeUInt32LE(INTEGER,0); bufToSend.write(STRING,4,STRING.length,"ascii"); BinaryData.copy(bufToSend,105,0,BinaryData.length);
拆包
var userID = bufFromUDP.readUInt32LE(0); var authCode = bufFromUDP.slice(4,104); var BinaryData = bufFromUDP.slice(105,bufFromUDP.length);
您也可以尝试在字段之间添加“分隔符”。 恩。
var sep = new Buffer(2); sep.write(";",0,1,'ascii');
当做Buffer.concat([userID,sep,authCode,sep]);
在每个字段之后添加sep字节。