NodeJS在写入后无法从telnet套接字接收数据

Posted

技术标签:

【中文标题】NodeJS在写入后无法从telnet套接字接收数据【英文标题】:NodeJS Cannot receive data from telnet socket after writing to it 【发布时间】:2020-03-13 05:51:03 【问题描述】:

当我连接时,我得到了初始数据,就好像我从 CMD 手动打开了 telnet,但我试图发送一个命令,但它似乎没有工作,因为它没有记录数据。我到处看了看,不知道该怎么办。

这是我使用的代码

 const conn = new net.Socket();
            conn.connect(port: 587, host: mxOrDomain, () => 
                conn.setEncoding('utf8');
                conn.on('data', (data) => 
                    const message = data.toString();
                    console.log(message);

                );
                conn.on('error', (data) => 
                    console.log('error : ', data);
                );

                conn.on('drain', () => 
                    console.log('drained');
                );

                conn.on('end', () => 
                    console.log('Ended');
                );

                setTimeout(() => 
                    conn.write('HELO blahbalh.com\\r\\n', 'utf8');
                , 2000);
            );

另外,telnet domain 587 在 CMD 中工作而不是在使用 cp.exec() 或 .spawn() 时是否有原因?

【问题讨论】:

【参考方案1】:

原来你必须用 \r\n 结束你的写入字符串,但我的 IDE 默认放置 \\r\\n。

【讨论】:

以上是关于NodeJS在写入后无法从telnet套接字接收数据的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs telnet 实时响应获取

使用nodejs和powershell清除telnet流的正确方法是啥?

如何在命令行的 telnet 窗口上读取输入和写入输出?

无法写入 QRunnable 内的 QTcpSocket

无法使用nodejs在telnet登录中输入密码

为啥用C#在磁盘上写入文件后内存没有释放