NodeJS缓冲区分割、字符串和二进制处理

5

我有三个需要在UDP数据包中发送的信息,分别是用户ID(int)、认证代码(string)和二进制数据。

我该如何能够同时发送这些项目并能够在另一端拆分它们。

我试过将带有信息的三个缓冲区连接起来,但无法想出在另一端拆分它们的方法,因为UID和认证代码的长度会有所不同。

1个回答

4
假设以下条件适用:
  • userID - 无符号32位整数
  • 授权码 - 假设为长度为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字节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接