我有 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/