Javascript 在Node.js中将数据从客户端发送到服务器

Javascript 在Node.js中将数据从客户端发送到服务器,javascript,node.js,Javascript,Node.js,我试图在Node.js中编写一个简单的客户机-服务器程序,其中客户机将输入2个参数(例如,用户将键入s4以获取4的平方根值)进行数学计算,并将其发送到服务器,服务器将返回答案。它在很大程度上起作用;但是,当服务器返回答案时,客户机将显示答案并显示原始输入。有人能指出为什么会发生这种情况吗 server.js var net = require('net'); var server= net.createServer(function(c) { console.log('server con

我试图在Node.js中编写一个简单的客户机-服务器程序,其中客户机将输入2个参数(例如,用户将键入
s4
以获取4的平方根值)进行数学计算,并将其发送到服务器,服务器将返回答案。它在很大程度上起作用;但是,当服务器返回答案时,客户机将显示答案并显示原始输入。有人能指出为什么会发生这种情况吗

server.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');
});

澄清一下:当我在客户机中输入
s4
时,打印到屏幕上的结果是
服务器返回:2s4

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

我想说的是删除或找到管道命令的替代品…但我只将express用作web服务器,因为它更容易传入命名变量SAH,是的,就是这样。我之前在文档页面上使用了一些示例,其中一些示例使用了
c.pipe(c)
,但没有解释它的作用,所以我认为我需要它
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');
});