处理Node.js套接字数据



我有服务器从客户端[GPS设备]接收数据。我在以可读格式呈现数据(即从客户端获得的结果)时遇到问题。以下是我尝试过的事情。

行为:

console.log(data)

我得到

<Buffer d0 d7 3d 00 c4 56 7e 81>

也尝试过

 console.log(data.toString())

但是我得到了不需要的结果:见下文:

��A�V~�

这是我的完整代码:

var net = require('net');
var fs = require('fs');
var server = net.createServer(function (socket) {
  console.log('Server started: Waiting for client connection ...');
  console.log('Client connected:port,address: '+socket.remotePort,      socket.remoteAddress);
  socket.on('data', function (data) {
        var date = new Date();
        var today = date.getDate()+'_'+date.getMonth();
        fs.appendFile(today+'_log.txt', data, function (err) {
          if (err) throw err;
            console.log(data.toString())
    });
 });
});
server.listen(my_port, my_ip);

感谢您的输入。

根据文档,您必须指定编码才能获取字符串而不是缓冲区:

Event: 'data'#
Buffer object
Emitted when data is received. The argument data will be a Buffer or String. Encoding of data is set by socket.setEncoding().

您可以配置套接字以 UTF-8 格式获取数据,例如,使用:

socket.setEncoding('utf8');

假设缓冲区中的数据是 7 位 ASCII,

console.log(data.toString('ascii'))

将解决问题。

这样做

socket.on('data', function (data) {
        var buff = Buffer.from(data);

但请记住,许多GPS设备都使用小端序,因此稍后您还必须解码数据。

最新更新