通过udp chrome socket将c-like struct作为arrayBuffer发送

时间:2016-06-12 10:58:44

标签: google-chrome ionic-framework websocket udp arraybuffer

我使用chrome.sockets发送udp消息。 我需要发送这个类似c的结构:

UInt16 ID=0, 
UInt Size=20,
UInt16 CRC=0, 
UInt16 MsgCount=0,
UInt32 App=0,
UInt32 Port=55555,
UInt32 Token=0

chrome.udp.send需要获取arrayBuffer。 我在代码中所做的是:

var arrayBuffer = new ArrayBuffer(20);
var dv = new DataView(arrayBuffer,0);
dv.setUint16(0,0);
dv.setUint16(2,20);
dv.setUint16(4,0);
dv.setUint16(6,0);
dv.setUint32(8,0);
dv.setUint32(12,55555);
dv.setUint32(16,0);

但是当我

console.log(arrayBuffer);

我得到了

ArrayBuffer {}

它是空的。

如何才能正确发送类似c的结构?

谢谢!

1 个答案:

答案 0 :(得分:0)

ArrayBuffer存储字节 - 任何字节值。

console.log()期望人类可读的ASCII字符串,以便它可以显示它们。

不幸的是,记录ArrayBuffer没有用 - 只要有一个ASCII NUL字符(并且你的数据在第一个字节中有一个),字符串就会停止。您需要编写一个不同的函数来接受ArrayBuffer并生成一个Hex string,您可以传递给console.log()