javascript - 在 Node.js 中从客户端向服务器发送数据

标签 javascript node.js

我正在尝试在 Node.js 中编写一个简单的客户端-服务器程序,其中客户端将输入 2 个参数(例如,用户将输入 S 4 来获取 4 的平方根的值)进行数学计算,将其发送到服务器,服务器将返回答案。它在大多数情况下都有效;但是,当服务器返回答案时,客户端会显示答案并显示原始输入。谁能指出为什么会发生这种情况?

服务器.js

var net = require('net');

var server= net.createServer(function(c) {
  console.log('server connected');

  c.on('end', function() {
    console.log('server disconnected');
  });

  c.on('data', function(data) {
    data = data.toString().split(" ");
    var num = parseInt(data[1], 10);
    switch (data[0]){
      case 'S':
        c.write(Math.sqrt(num).toString());
    }
  });

  c.write('What would you like to do?\n');
  c.write('(S) - Square root <arg>\n');
  c.pipe(c);
});

server.listen(3000, function() {
  console.log('server bound');
});

客户端.js

var net = require('net');
var num = 1;

var client = net.connect({port:3000}, function() {
    console.log('client connected');
});

client.on('data', function(data) {
  if (num == 1) {
    console.log(data.toString());

    process.stdin.resume();
    process.stdin.once('data', function(input) {
      client.write(input);
    });

    num++;
  } else {
    console.log("Server returned: " + data.toString() + "\n");
    process.exit();
  }
});

client.on('end', function() {
  console.log('\nclient disconnected\n');
});

澄清一下:当我在客户端输入S 4时,打印到屏幕上的结果是Server returned: 2S 4

最佳答案

您正在通过管道将输入传输到输出

关于javascript - 在 Node.js 中从客户端向服务器发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25768689/

相关文章:

mysql - 数据库模型的元数据应该在模型文件还是迁移文件中定义?

javascript - jquery load() 将显示和不透明度放在元素样式中

javascript - 将包含 javascript 的文本绑定(bind)到模板中的 innerHTML

javascript - 没有图像的元素上的 CSS 掩码?

node.js - 如何将 Node CLI 程序的输出通过管道传输到 shell?

node.js - 在 laravel 中使用 Firebase-admin 时找不到依赖项

javascript - Electron 与 Chrome : why one can access file system while the other can't?

javascript - 使用 gulp-git 克隆带有凭据的 git 存储库

node.js - Centos Node ,什么都没有发生

javascript - Nodejs 变量无法传递给事件监听器