我有一个嵌入在C ++应用程序中的telnet服务器,我可以连接到没有问题 使用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' }
如果我设置一个简单的echo服务器,节点一切正常,那真的很奇怪 精细。这是工作的echo服务器代码:
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
有什么理由:
答案 0 :(得分:3)
解决!
问题是我的应用服务器中的代码绑定到localhost并且默认情况下 绑定到:: 1
的IPV6地址将一个localhost主机传递给net.connect假定IPV4并且不起作用。
mac命令行telnet和nc都能正常工作并正确连接。
两种解决方案:
现在所有修复:)
煤汽
答案 1 :(得分:0)
看起来你忘了告诉服务器听你的代码。它会抛出连接拒绝错误,因为没有任何东西可以连接到...
最后添加:server.listen(port);
答案 2 :(得分:0)
net.connect的原型是(选项,回调) 见http://nodejs.org/api/net.html#net_net_connect_options_connectionlistener
然后我会建议针对标准的telnet服务器测试你的代码以查看它的行为,最后我强烈建议使用jshint或jslint。