我需要在UDP数据包中发送3条信息,即userID(int),auth代码(字符串)和二进制数据. 我如何能够立即发送这些项目并能够在另一端分割它们. 我已经尝试用信息连接三个缓冲区但是无法找到在另
我如何能够立即发送这些项目并能够在另一端分割它们.
我已经尝试用信息连接三个缓冲区但是无法找到在另一端分割它们的方法,因为UID和auth代码的长度会有所不同.
假设以下适用> userID – 无符号32位整数
> auth code – somekind of string让我们说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字节.