【问题标题】:Very strange answer from server in socket communication服务器在套接字通信中的非常奇怪的回答
【发布时间】:2014-05-14 22:26:24
【问题描述】:

我正在使用一个非常简单的代码来连接到远程登录服务器(安装在 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

已创建套接字。

已连接

回应:??↑?? ??#??'

【问题讨论】:

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


    【解决方案1】:

    好吧,既然我发现了发生的事情,我会回答我自己的问题。

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

    Source

    您不需要在您可能创建的任何客户端和服务器中实施 telnet 协商,但您需要注意这一点,以避免它出现在连接的另一端可能导致的问题。作为基于字节的协议,保留值 255(命名为 IAC)以指示接下来的协商序列。为了实际发送 255 的值,您需要对其进行转义。您可以通过连续发送两次来做到这一点。

    然后我了解到服务器正在尝试协商。所以实际上得到了这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 2012-04-23
      • 2012-04-13
      相关资源
      最近更新 更多