2014-02-18 39 views
4

我有服务器从客户端[GPS设备]接收数据。我有问题以可读格式显示数据(即从客户端获得的结果)。以下是我尝试过的东西。处理Node.js套接字数据

这样做:

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

感谢您的输入。

+0

有关数据的任何想法得到接受?无论是base64编码还是ascii? – nightgaunt

+0

没有关于使用的编码的明确细节。我最大的问题之一。协议文档不会显示 –

+0

没有多少帮助而不知道。试验和错误可能会起作用。这里有一个可以提供帮助的文档。 http://docs.nodejitsu.com/articles/advanced/buffers/how-to-use-buffers – nightgaunt

回答

0

假设在缓冲器中的数据为7位ASCII,

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

将解决该问题。

5

根据该文件,则必须指定编码得到一个字符串,而不是一个缓冲区:

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