来自socket通信服务器的非常奇怪的答案

时间:2014-04-03 08:20:06

标签: node.js sockets tcp raspberry-pi telnet

我正在使用一个非常简单的代码连接到一个telnet服务器(安装在Raspberry Pi上,经过测试,它可以工作)。为nodejs编写的代码尝试作为telnet客户端工作,但在他连接时,我得到的数据不是我能理解的。

代码:

var net = require('net');

var socket = net.createConnection(23, 'addressorip.rpi.com');
console.log('Socket created.');
socket.on('data', function(data) {
  // Log the response from the HTTP server.
  console.log('RESPONSE: ' + data);
}).on('connect', function() {
  console.log('connected');
  //socket.write();
}).on('end', function() {
  console.log('DONE');
});

shell上的输出:

  

C:\ Documents and Settings \ testdir> node telnet_test.js

     

创建套接字。

     

已连接

     

回应:??↑?? ??#??“

1 个答案:

答案 0 :(得分:0)

我发现发生的事情后,我会回答我自己的问题。

当我尝试使用nodeJs套接字连接到Telnet服务器时,我以为我将获得一个请求用户名的字符串。但是,由于我总是直接连接到telehack.com的telnet服务器,我无法理解发生了什么。嗯,答案就在这里:

Source

  

您不需要在可能创建的任何客户端和服务器中实现telnet协商,但您需要了解它以避免出现在连接另一端可能导致的问题。作为基于字节的协议,保留值255(命名为IAC)以指示协商序列。为了实际发送255的值,你需要逃避它。您可以通过连续两次发送来完成此操作。

然后我明白服务器正试图协商。所以真的得到了这个:

wireshark

然后解决这个问题的方法是实现协商协议来处理从服务器发送的这个TELNET命令。