问题描述
我正在使用Numato中继,并且尝试使用带有net.socket的javascript通过telnet与之连接,然后发送命令。
但是,当尝试连接时,它将拒绝用户名和密码。问题是输入用户名后输入了奇怪的字符。
在代码中,您可以看到我试图以各种方式查看输出,但是没有结果。
如果有人知道为什么或曾经使用过Numato模块,我将不胜感激。这是代码及其输出:
var net = require('net');
var client = new net.socket();
client.connect(23,'192.168.1.100',function() {
console.log('Connected');
});
client.on('connect',function(){
client.write('admin\n')
client.write('admin\n')
// client.write('admin\n' + 'admin\n')
})
client.on('data',function(data) {
console.log(''+data)
// var datos = []
// datos.push(data)
// datos.push(data.toJSON)
// console.log(datos)
// client.destroy(); // kill client after server's response
});
client.on('close',function() {
console.log('Connection closed');
});
@H_502_14@
解决方法
根据Numato documentation,此通道需要ASCII字符编码,而不是您要发送的UTF编码的字符串。
更改:
client.on('connect',function(){
client.write('admin\n')
client.write('admin\n')
// client.write('admin\n' + 'admin\n')
})
收件人:
client.on('connect',function(){
client.write('admin\n','ascii')
client.write('admin\n','ascii')
// client.write('admin\n' + 'admin\n')
})
注意:eol的答案也可能适用于此。如果您使用的是Windows(假设在此处),则同时需要\r\n
。
当我尝试通过NodeJS与telnet服务器通信时,我遇到了类似的问题。解决我的问题的方法是在换行符前使用回车符:
client.write('admin\r\n');