我在NodeJS中运行了一些Javascript,试图从UDP端口(本地端口)上获取一些数据,然后将其收集为更大的块,然后以this_block的形式发送。
文件顶部
var first_buf = new Uint8Array(1024*1024);
随后再说
var newbox = get_box(view, last_offset, first_len);
if (newbox['type']=='abcd') {
buf = view.slice(0, last_offset+newbox['length']);
this_block = Array.prototype.slice.call(buf);
buf = view.slice(last_offset+newbox['length'], first_len);
// adjust first len to account for rest of data
first_len = first_len - last_offset - newbox['length'];
// and copy that data into the start of first_buf
first_buf.set(buf);
last_offset = 0;
}
else {
this_block = [];
buf = view.slice(0, first_len);
// now copy this into the start of first_buf.
first_buf.set(buf);
// first_len is already set correctly, so don't need to adjust
last_offset += newbox['length'];
}
因此,到此结束时,我应该将this_block设置为空数组或要发送的正确arraybuffer。暂时可以将数据复制到this_block,并将任何备用副本复制到first_buf的开头。然后经过几次迭代后,块副本(first_buf.set)破坏了数据,我得到了垃圾。我认为是.set导致了它,但是我看不到是怎么回事。非常感谢收到的任何线索。
好吧,我不认为问题出在这里。进一步的分析表明,传入的数据有时会丢失一大块。