服务器在套接字通信中的非常奇怪的回答

Posted

技术标签:

【中文标题】服务器在套接字通信中的非常奇怪的回答【英文标题】: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

已创建套接字。

已连接

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

【问题讨论】:

【参考方案1】:

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

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

Source

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

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

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

【讨论】:

以上是关于服务器在套接字通信中的非常奇怪的回答的主要内容,如果未能解决你的问题,请参考以下文章

iis中的服务器到服务器通信与http

C语言中的套接字通信。发送文件内容

Java中的广播消息

通过 Socket C++ 发送长字符串

套接字序列化减速

网络编程