javascript - 【新手】nodejs怎么解析udp数据?
阿神
阿神 2017-04-11 11:32:29
0
2
714

如图,想从接收到的数据里的频率信息和幅度信息读出来。但是这个命令头里的数据点数怎么读出来呢?还有后面的数据?

后端是这样跟我说的,用sizeof读头大小,然后定义个XX,XX.datanum把数据点数知道了,然后内存复制频率信息,再来读取。。。。
一脸蒙逼。。。

之前做过读tcp数据的,所以用什么样的方法接收我知道,但是怎么解析呢,之前没有定义的这个命令头,而且数据字节标了的,仅用readInt方法就把数据读出来了。

这个应该怎么弄呢?求大神帮助。

阿神
阿神

闭关修行中......

reply all(2)
大家讲道理

没太明白你的意思,不过不管tcp 还是 udp 在node里面处理起来都还是比较容易的。

以下代码贴的是官方手册的。
获取数据在画线的这一段

const dgram = require('dgram');
const server = dgram.createSocket('udp4');

server.on('error', (err) => {
  console.log(`server error:\n${err.stack}`);
  server.close();
});


----------
##接收数据

server.on('message', (msg, rinfo) => {
  console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
});

##接收数据
----------


server.on('listening', () => {
  var address = server.address();
  console.log(`server listening ${address.address}:${address.port}`);
});

server.bind(41234);

拿到数据后估计就是按你和后台商量好的结构解析数据了把。

小葫芦

楼上的方法是对的,不过之前用tcp方式的时候我已经知道了。
我让后台把命令头读出是8个字节的。init 4字节,bool也是4字节。
然后就简单了,readFloat直接读数据(以我的为例,这里面读出来是800),.length读出来长度为6408,
这就好办了,排除前面的8字节,后面800乘以4+800乘以4=6400刚好分别对应频率和幅度信息,
一个readInt32LE循环读出数据就行了。

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template