2012-07-19 96 views
2

我試圖創建一個NodeJS TCP服務器,它將讀取到客戶端輸入並相應地執行操作。讀取NodeJS TCP服務器中的客戶端數據輸入

我想知道如何讀取數據,因此我可以設置條件來執行過程。

var net = require('net'); 
var server = net.createServer(function (socket) { 

socket.on('data', function(data) { 
    buf = new Buffer(256); 
    len = buf.write(data.toString()); 

    if (buf.toString('utf8', 0, len) === "test"){ 
     console.log("you typed test"); 
    } 

    console.log(len + " bytes: " + buf.toString('utf8', 0, len)); 
}); 
socket.write("Connected to server.\r\n"); 
}); 
server.listen(8080, "127.0.0.1"); 

我這裏輸出輸入的值: console.log(len + " bytes: " + buf.toString('utf8', 0, len)); 但我如果該日誌上面的說法,心不是匹配值「測試」當我真正鍵入客戶終端窗口「測試」。

任何幫助表示讚賞

克里斯

+2

數據的接收在''data''事件被分塊,所以你需要建立緩衝區。然後你可以在''end''事件上執行你的測試。看到這個問題http://stackoverflow.com/questions/6412944/node-js-read-in-buffered-data – 2012-07-20 00:49:27

+0

@scriptfromscratch爲什麼不加,作爲一個答案,因此它可以,如果它是正確的被接受? – 2012-07-20 06:35:56

+0

純粹缺乏時間@JoachimPileborg。我寧願在我的答案中留下代碼示例,但我不得不用完辦公室:) – 2012-07-20 18:29:26

回答

6

我的工作了使用toString()方法:

socket.on('data', function(data) { 
    var response = data.toString().trim(); 

    if (/disconnect/.test(response)) { 
    console.log("Client is diconnecting."); 
    socket.end('Disconnecting you now.\r\n'); 
    } 
}); 

socket.on('end', function() { 
    console.log('client disconnected'); 
});