【问题标题】:Can't Connect To A Telnet Server From Node.js无法从 Node.js 连接到 Telnet 服务器
【发布时间】:2014-06-28 17:16:19
【问题描述】:

我有一个嵌入在 C++ 应用程序中的 telnet 服务器,我可以毫无问题地连接到该服务器 使用远程登录。

我想编写一个连接到我的服务器的节点应用程序,我已经尝试过 这个

var net = require('net');

var port = 6502
var host = '127.0.0.1'

var socket = net.connect(port,host, function() {
    console.log("Sending data");
    socket.write("hello\r\n")

    socket.on("data", function (data) {
        console.log("received data");
        console.log( data.toString() );
        socket.end();
    })
})

socket.on("error", function(err) {
    console.log("Error");
    console.log(err);
})

不幸的是我得到的是这个

> node test.js
{ [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }

真正奇怪的是,如果我用节点设置一个简单的回显服务器,一切正常 美好的。这是有效的回显服务器代码:

var net = require('net');

var server = net.createServer(function (socket) {
  socket.write('Echo server\r\n');
  socket.pipe(socket);
});

server.listen(6502, '127.0.0.1');

我从中得到

Sending data
received data
Echo server
hello

有什么原因吗:

  • 我可以 telnet 进入我的应用程序了
  • 我可以在同一端口上从节点连接到我的节点回显服务器
  • 如果我从我的节点应用程序连接到我的应用程序,我会收到连接被拒绝

额外信息

  • 在 OSX(小牛)上
  • 节点版本 0.10.28
  • C++ 中的 Telnet 服务器是通过嵌入式 lua 和 luasocket (lua 5.1) 提供的

【问题讨论】:

  • 当您成功连接到 C++ telnet 服务器时,您使用的telnet 命令行是什么?
  • rlwrap 远程登录 localhost 6502

标签: node.js networking telnet


【解决方案1】:

解决了!

问题是我的应用服务器中的代码默认绑定到 localhost 绑定到 ::1 的 IPV6 地址

将 localhost 的主机传递给 net.connect 假定 IPV4 并且不起作用。

mac 命令行 telnet 和 nc 都可以正常工作并正确连接。

两种解决方案:

  • 应用绑定到 127.0.0.1 并且节点中的 localhost 工作正常
  • 在 test.js 中将主机地址设置为 ::1 并通过 ipv6 连接

现在一切都已修复:)

【讨论】:

  • 感谢分享!
【解决方案2】:

您似乎忘记告诉服务器监听您的代码。它抛出一个连接被拒绝的错误,因为没有任何东西可以连接......

在末尾添加:server.listen(port);

【讨论】:

  • 我不想创建一个监听的服务器。我正在尝试从节点连接到已经运行并且可以使用命令行 telnet 正常工作的服务器
【解决方案3】:

net.connect 的原型是(选项,回调) 见http://nodejs.org/api/net.html#net_net_connect_options_connectionlistener

然后我建议针对标准 telnet 服务器测试您的代码以查看其行为方式,最后我强烈建议使用 jshint 或 jslint。

【讨论】:

  • net.connect 是多态的,net.connect(port, [host], [connectListener]) 也可以。在您链接到的页面上向下滚动一点:)
猜你喜欢
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-09
相关资源
最近更新 更多