2014-09-10 4 views
1

Я пытаюсь написать простую клиент-серверную программу в Node.js, где клиент будет вводить 2 аргумента (например, пользователь будет набирать S 4, чтобы получить значение квадратный корень из 4) для математического вычисления, отправьте его на сервер, и сервер вернет ответ. Он работает по большей части; однако, когда сервер возвращает ответ, клиент отображает ответ, а также отображает исходный ввод. Может ли кто-нибудь указать, почему это происходит?Отправка данных от клиента на сервер в Node.js

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

client.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

+0

Я бы сказал, удалить или найти альтернативу запятой трубы d ... но я использовал только экспресс в качестве веб-сервера, так как его проще передать в названных переменных –

ответ

1

Вы трубопроводы вход на выход

+0

А, да, это так. Я использовал несколько примеров на страницах документа раньше, и некоторые из них использовали 'c.pipe (c)' и не объясняли, что он сделал, поэтому я предположил, что мне это нужно – 2014-09-10 15:06:58

Смежные вопросы