【问题标题】:Handling Node.js socket data处理 Node.js 套接字数据
【发布时间】:2014-03-18 01:37:50
【问题描述】:

我有服务器从客户端 [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);

感谢您的意见。

【问题讨论】:

  • 对收到的数据有任何想法吗?是base64编码还是ascii?
  • 没有关于使用的编码的明确细节。我最大的问题之一。协议文档不显示
  • 在不知不觉中帮助不大。试错可能会奏效。这是一个可以提供帮助的文档。 docs.nodejitsu.com/articles/advanced/buffers/how-to-use-buffers
  • 我在供应商网站的某个地方发现了有关“ISO-8859-1”编码标准的信息。让我了解一下。
  • ascii 编码给了我这个结果 - PW=\u0000DV~\u0001 这是唯一对我有意义的。

标签: javascript string node.js sockets networking


【解决方案1】:

根据文档,您必须指定编码才能获取 String 而不是 Buffer:

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');

【讨论】:

    【解决方案2】:

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

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

    会解决问题。

    【讨论】:

      【解决方案3】:

      这样做

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

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

      【讨论】:

        猜你喜欢
        • 2014-11-08
        • 1970-01-01
        • 2011-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-18
        相关资源
        最近更新 更多