5

我需要在 UDP 数据包中发送 3 条信息,即用户 ID(int)、身份验证代码(字符串)和二进制数据。

我如何能够一次发送这些物品并能够在另一端拆分它们。

我已经尝试将三个缓冲区与信息连接起来,但无法找到在另一端拆分它们的方法,因为 UID 和身份验证代码的长度会有所不同。

4

1 回答 1

4

假设以下适用

  • userID - 无符号 32 位整数
  • auth code - 某种字符串让我们说 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 字节。

于 2013-04-24T21:56:35.153 回答