我在接收数据时遇到问题,当我每次输入telnet时尝试telnet服务器时,服务器会记录我输入的每个字符,那么如何获取所有数据呢?还是完整的数据流?
var svr = require('net');
svr.creteSerever(function(socket){
console.log("client connected");
socket.on('data',function(data){
console.log("the socket",data.toString());
});
});
svr.listen(3030, 'localhost', false, function () {
console.log('server listening in port 3030');
});
答案 0 :(得分:1)
您可以收集数据,直到您有足够的数据,或直到远程端完成为止:
var chunks = [];
socket.on('data', function(data) {
chunks.push(data);
// here you can check if you have enough
}).on('end', function() {
var all = Buffer.concat(chunks);
// here you have all the data that the client sent
});
编辑:根据您的评论判断,您对阅读所有数据并不是那么感兴趣,而是逐行阅读。在这种情况下,您可以使用readline
模块:
var net = require('net');
var readline = require('readline');
net.createServer(function(socket) {
var rl = readline.createInterface({ input : socket });
rl.on('line', function(l) {
console.log('line:', l);
});
}).listen(...);