2012-10-10 47 views
3

如何处理node.js TCP服务器中的CONTROL+C输入?如何处理node.js中的CONTROL + C TCP服务器

var server = net.createServer(function(c) { 
    c.on('end', function() { 
     console.log('Client disconnected'); 
    }); 
    c.on('data', function(data) { 
     if (data == "CONTROL+C") { // Here is the check 
      c.destroy(); 
     } 
    }); 
}).listen(8124); 
+1

有在这里发表解决方案http://stackoverflow.com/questions/9199105/handling-ctrlc-event-in-node-js-on-windows – vinayr

+0

这是不同的,我试图解决这个在一个插座上。 – Mark

+0

你在客户端或服务器端按ctrl + c?更多细节请。 – vinayr

回答

2

Control-C是一个单字节,0x03(使用ASCII图有点帮助)。但是,无论何时处理套接字连接,您都必须记住您将以“分块”方式接收数据,并且分块不一定与数据的发送方式相对应;您不能假设客户端上的一个发送呼叫对应于服务器端的单个块。因此,您不能假设客户端发送Control-C,它将是您在数据事件中收到的唯一一件事。其他一些数据可能会在它之前出现,而其他一些数据可能会在它之后出现,全部出现在同一事件中。你将不得不在数据中查找它。

0

来自ebohlman的回答。这行得通。

c.on('data', function(data) { 
    if (data.toString().charCodeAt(0) === 3) { 
     c.destroy(); 
    } 
});