2015-05-06 129 views
1

我有一臺服務器正在從客戶端設備接收數據。客戶端將數據發送到服務器,並且它總是最多3個字符,例如*46如何檢查數據是否完整

如何檢查數據是否以星號和2個字符結尾,以便我知道這是來自客戶端的完整數據?

此外,該設備可能會在數據末尾添加一個換行符,那麼如何檢查數據末尾是否有換行符?

這是到目前爲止我的代碼:

var net = require('net'); 

var server = net.createServer(function(socket) { 
    socket.on('data', function(data) { 
     var receivedata = data.toString(); 
     // How to check if received data is complete, i.e. ending in 3 characters, *23 
    }); 
}); 

回答

0

使用正則表達式。舉例:

var str = "Hello wor*23"; 
if(str.match(/\*[0-9][0-9]$/)){ 
    console.log("Hello"); 
} 
else{ 
    console.log("Data not proper"); 
} 

它檢查最後3個值是否爲* number number

0

你可能只要數據是流的數據塊,你需要等待end事件,以獲得完整的數據尋找這個

var net = require('net'); 

var server = net.createServer(function(socket) { 
    var receivedata = ""; 
    socket.on('data', function(data) { 
     receivedata += data.toString(); 
    }); 
    socket.on('end', function() { 
     console.log(receivedata); 
    }); 
}); 

注意未經測試