gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 23:48:38 26 4
gpt4 key购买 nike

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

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

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' }

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

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

有什么原因吗:

  • 我可以很好地远程登录我的应用
  • 我可以在同一端口上从 Node 连接到我的 Node 回显服务器
  • 如果我从我的 Node 应用程序连接到我的应用程序,我会遇到连接被拒绝的情况

额外信息

  • 在 OSX 上(特立独行)
  • Node 版本 0.10.28
  • C++ 中的 Telnet 服务器通过嵌入式 lua 和 luasocket (lua 5.1) 提供

最佳答案

解决了!

问题是我的应用程序服务器中的代码默认绑定(bind)到本地主机绑定(bind)到::1 的 IPV6 地址

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

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

两种解决方案:

  • 应用程序绑定(bind)到 127.0.0.1 并且 Node 中的本地主机工作正常
  • 在 test.js 中将主机地址设置为::1 并通过 ipv6 连接

虽然现在都已修复 :)

煤气

关于node.js - 无法从 Node.js 连接到 Telnet 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23590465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com