I'm not sure if it's bad form to repost my question from another site, but 
here goes:

*My problem in short involves trying to build a very simple TCP client 
(think Netcat) with node's net module.* I have had success with 
sock.write('GET etc...), but when I try to use the readline module to 
dynamically send data, the servers I have tried to talk to either never 
respond, or don't respond how I would expect them to.

My *suspicion* is that the readline module is escaping escape characters 
such as \r\n, which causes my request to the servers to be improperly 
formatted. I have tried:

client.write(new Buffer(cmd)) 


But my basic TCP server is still interpreting /r/n as text. In fact, the 
native console interprets it as text.

*Update:* I have verified by using JSON.stringify on the terminal output 
that something is escaping escape characters (e.g. When I enter \r\n into 
the terminal the JSON.stringify -ed terminal input reads as \\r\\n). Maybe 
my terminal is doing it by default and this isn't at all a problem with 
node.js? I'm using Windows Powershell. 


See my client script below for further clarification:

// Inspired and sourced from: 
http://www.hacksparrow.com/tcp-socket-programming-in-node-js.html
// ANSI escape code sequence for colors, etc. General Form: "\x1b[Nm" Where N 
is a number.
// For http requests, see 
http://stackoverflow.com/questions/6686261/what-at-the-bare-minimum-is-required-for-an-http-request
//For IRC protocol see https://news.ycombinator.com/item?id=2071318
var net = require('net');var fs = require('fs');var readline = 
require('readline');

var host = 'localhost';var port = 6667;
var client = new net.Socket();
client.connect(port, host, function() {

    console.log('CONNECTED TO: ' + host + ':' + port + '\n');
    // Write a message to the socket as soon as the client is connected, the 
server will receive it as message from the client 
    client.write('USER foo bar batz boo\r\nNICK test345\r\n');//    
client.write('JOIN #mae\r\n');

  rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
  });

  rl.on('line', function(cmd) {
    var bufferCommand = new Buffer(cmd)
    console.log('bufferCommand = ' + bufferCommand);
    client.write(bufferCommand);
  });
});


// Add a 'data' event handler for the client socket// data is what the server 
sent to this socket
client.on('data', function(data) {


    console.log('DATA: ' + data);

    var fs = require('fs');


    fs.appendFile("log.txt", data, function(err) {

      if(err) {
        return console.log(err);
      }

      console.log("The file was saved!");
    }); 
});
// Catches error if no TCP server to answer request.
client.on('error', function(error) {
  console.log(error);});
// Add a 'close' event handler for the client socket
client.on('close', function() {
    console.log('Connection closed');});

All help and criticism appreciated!

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
To post to this group, send email to nodejs@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/d4f2b3c9-1f30-4bc4-9518-4174fd5e47f1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to