处理Node.js套接字数据

7
我是一位有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:

我有一个从客户端 [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码? - user1741851
不知道具体情况,帮助不大。可以试试错误调试。这里有一份文档可以帮助你。http://docs.nodejitsu.com/articles/advanced/buffers/how-to-use-buffers - user1741851
我在供应商网站上找到了关于“ISO-8859-1”编码标准的相关信息。让我去了解一下。 - Cheruiyot Felix
ASCII编码给了我这个结果 - PW=\u0000DV~\u0001 这是唯一一个对我有些意义的。 - user1741851
终于找到了协议文档。看起来还有很多工作要做 > http://www.scribd.com/doc/145817155/GPRS-Vehicle-Tracker-Protocol-NR006-NR024 - Cheruiyot Felix
显示剩余2条评论
3个回答

10
根据文档,你必须指定一个编码来获取一个字符串而不是缓冲区:
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');

1
假设缓冲区中的数据是7位ASCII。
console.log(data.toString('ascii'))

会解决这个问题。

1
像这样做。
socket.on('data', function (data) {
        var buff = Buffer.from(data);

但是请记住,许多GPS设备使用小端模式,因此稍后您还需要解码数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接