Node.JS 服务器逐字符而不是逐行接收数据

Posted

技术标签:

【中文标题】Node.JS 服务器逐字符而不是逐行接收数据【英文标题】:Node.JS server receives data character by character instead of line by line 【发布时间】:2012-10-20 17:02:52 【问题描述】:

我有一个简单的 Node.JS 服务器:

//Module dependencies
var net = require('net')


//Create server
var server = net.createServer(function (conn) 

  // handle connection
  conn.setEncoding('utf8');

  conn.write(
      'Hi, please enter something: '
  );

  conn.on('data', function (data) 
    console.log(data);
  );

);


//Listen
server.listen(3000, function () 
  console.log('\033[96m   server listens at *:3000\033[39m');
);

它应该在服务器的控制台窗口中回显客户端的输入。但是当我使用 telnet 客户端连接到服务器时,它是通过逐个字符输出来实现的,而我宁愿它在按 Enter 时逐行输出。

我知道我无法收集conn.on 方法中的所有输入,但可以在较低级别完成吗?

【问题讨论】:

【参考方案1】:

这是因为 telnet 在每个字符之后都会刷新 TCP 缓冲区,除非您使用 linemode。

【讨论】:

如何在 Windows 7 telnet 客户端开启这个选项? 你要实现telnet协议rfc1184

以上是关于Node.JS 服务器逐字符而不是逐行接收数据的主要内容,如果未能解决你的问题,请参考以下文章

如何将文件逐行读入node.js中的数组[重复]

正则表达式逐行:如何匹配三引号而不是双引号

一次将整个 DataTable 插入数据库而不是逐行插入?

SELECT FOR UPDATE 在 MySQL 中保存整个表,而不是逐行保存

Socket 使用 Node.js 发出 ajax 接收的数据

Node JS 推送服务器发送/接收