node.js - NodeJS 缓冲区拆分、字符串和二进制

标签 node.js network-programming udp

我有 3 条信息需要在 UDP 数据包中发送,用户 ID (int)、授权代码 (string) 和二进制数据。

我怎样才能一次发送这些项目并能够在另一端拆分它们。

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

最佳答案

假设以下条件适用

  • 用户 ID - 无符号 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 字节。

关于node.js - NodeJS 缓冲区拆分、字符串和二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201611/

相关文章:

node.js - 为什么 MongoDB 会忽略我的一些更新?

对外暴露的 Docker 端口

IPX/SPX 和 TCP/IP 的性能

linux - 如何强制 UDP 数据的完整校验和?

html - 在网络上流式传输自适应音频(低延迟)

mobile - NAT 后面到 NAT 后面的连接

node.js - 如何实时重新加载 LoopBack 项目?

javascript - Electron 将我的应用程序数据存储在 'userData' 路径中

objective-c - 在设备之间来回发送 NSData - GameCenter 替代方案

javascript - JSON 到对象 - JavaScript