2012-10-10 72 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(); 
    } 
});