2014-02-18 41 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');