【问题标题】:Reading a clients data input in a NodeJS TCP Server在 NodeJS TCP 服务器中读取客户端数据输入
【发布时间】:2015-08-13 03:29:18
【问题描述】:

我正在尝试创建一个 NodeJS TCP 服务器,它将读取客户端的输入,然后采取相应的行动。

我想知道如何读取数据,以便设置条件来执行流程。

var net = require('net');
var server = net.createServer(function (socket) {

socket.on('data', function(data) {
    buf = new Buffer(256);
    len = buf.write(data.toString());

    if (buf.toString('utf8', 0, len) === "test"){
        console.log("you typed test");
    }

    console.log(len + " bytes: " + buf.toString('utf8', 0, len));
});
socket.write("Connected to server.\r\n");
});
server.listen(8080, "127.0.0.1");

我正在输出此处输入的值: console.log(len + " bytes: " + buf.toString('utf8', 0, len)); 但是当我在客户端窗口中实际键入“test”时,我在此日志上方的 if 语句与值“test”不匹配。

感谢任何帮助

-克里斯

【问题讨论】:

  • 您在'data' 事件中收到的数据是分块的,因此您需要构建缓冲区。然后,您可以对 'end' 事件执行测试。看到这个问题stackoverflow.com/questions/6412944/…
  • @scriptfromscratch 为什么不将其添加为答案,这样如果正确就可以接受?
  • 纯粹是没有时间@JoachimPileborg。我本来希望在我的答案中留下一个代码示例,但我不得不跑出办公室:)

标签: node.js


【解决方案1】:

我使用toString() 方法解决了这个问题:

socket.on('data', function(data) {
  var response = data.toString().trim();

  if (/disconnect/.test(response)) {
    console.log("Client is diconnecting.");
    socket.end('Disconnecting you now.\r\n');
  } 
});

socket.on('end', function() {
  console.log('client disconnected');
});

【讨论】:

    猜你喜欢
    • 2020-01-28
    • 2021-09-05
    • 2016-07-20
    • 2012-09-21
    • 2012-05-26
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多