2013-04-24 94 views
2

我有3条信息,我需要发送一个UDP数据包,userID(int),授权码(字符串)和二进制数据。NodeJS缓冲区拆分,字符串和二进制

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

我试着连接三个缓冲区的信息,但不能想办法在另一端分割它们,因为UID和授权码的长度会有所不同。

回答

2

假设按照以下规定

  • 用户ID - 无符号32位整数
  • 授权码 - 串somekind的假设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字节。