使用 telnet 的 Node.js 测试服务器 - 设置 Linemode

Posted

技术标签:

【中文标题】使用 telnet 的 Node.js 测试服务器 - 设置 Linemode【英文标题】:Node.js testing server with telnet - set Linemode 【发布时间】:2013-02-17 04:18:12 【问题描述】:

有人可以告诉我如何将 linemode 设置为 telnet 测试吗?我google了很多,但不幸的是我没有成功。 我有这个超级简单的代码

var net = require('net');

var server = net.createServer(function(c) 
  console.log('socket opened');
  c.setEncoding('utf8');
  c.on('end', function() 
    console.log('connection/socket closed');
  );
  c.on('data', function(data) 
    console.log('Data:'+data);
    c.write('Answer:'+data);
    // c.end(); // close socket/conection
  );
);

server.listen(8124, function()  // start server (port 8124)
  console.log('server started');
);

但测试看起来像这样:

客户:

Microsoft Telnet> open localhost 8124
Answer:dAnswer:daAnswer:atAnswer:taAnswer:a

服务器:

C:\Users\Laura\node server.js
server started
socket opened
Data:d
Data:a
Data:t
Data:a

【问题讨论】:

【参考方案1】:

你想得到如下的telnet输入

Answer: a
Answer: b
Answer: c

那么您需要同时发送\r is carriage returnline feed (\n)。所以你的代码应该如下所示

var server = net.createServer(function(c) 
    console.log('socket opened');
    c.setEncoding('utf8');
    c.on('end', function() 
        console.log('connection/socket closed');
    );
    c.on('data', function(data) 
        console.log('Data:'+data);
        c.write('\r\nAnswer:');
        // c.end(); // close socket/conection
    );
);

【讨论】:

以上是关于使用 telnet 的 Node.js 测试服务器 - 设置 Linemode的主要内容,如果未能解决你的问题,请参考以下文章

使用 Telnet 的 Node.js 客户端和服务器游戏

无法从 Node.js 连接到 Telnet 服务器

Node.js TCP 客户端的行为与 Netcat/Telnet 不同

Node.js:telnet“石头、纸、剪刀”程序不工作

Node JS REPL、Sockets 和 Telnet - Tab 补全、箭头键等

Node JS telnet 服务器奇怪的输入和奇怪的输出