【问题标题】:NodeJS buffer splitting, string and binaryNodeJS 缓冲区拆分、字符串和二进制
【发布时间】:2013-04-24 20:32:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: node.js network-programming udp


    【解决方案1】:

    假设以下适用

    • userID - 无符号 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 字节。

    【讨论】:

      猜你喜欢
      • 2020-05-10
      • 2019-06-04
      • 2016-09-16
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多