NodeJS缓冲区拆分,字符串和二进制

时间:2013-04-24 20:32:18

标签: node.js network-programming udp

我需要在UDP数据包中发送3条信息,即userID(int),auth代码(字符串)和二进制数据。

我如何能够立即发送这些项目并能够在另一端分割它们。

我尝试使用信息连接三个缓冲区,但无法找到在另一端拆分它们的方法,因为UID和auth代码的长度会有所不同。

1 个答案:

答案 0 :(得分:4)

假设以下适用

  • userID - 无符号32位整数
  • auth code - somekind of string let' s say 100 chars length
  • 二进制数据 - ..

包装

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字节。