3

如何处理CONTROL+Cnode.js 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);
4

2 回答 2

2

Control-C 是一个单字节,0x03(使用 ASCII 图表有点帮助)。

但是,无论何时处理套接字连接,您都必须记住,您将以“分块”方式接收数据,并且分块不一定与数据发送的方式相对应;您不能假设客户端的一个发送调用对应于服务器端的单个块。因此,您不能假设如果客户端发送 Control-C,它将是您在数据事件中收到的唯一内容。一些其他数据可能在它之前,一些其他数据可能在它之后,所有这些都在同一个事件中。您将不得不在您的数据中寻找它。

于 2012-10-10T06:30:58.587 回答
0

从埃博尔曼的回答。这行得通。

c.on('data', function(data) {
    if (data.toString().charCodeAt(0) === 3) {
        c.destroy();
    }
});
于 2015-06-01T14:06:10.620 回答