如何通过telnet发送回车?

Posted

技术标签:

【中文标题】如何通过telnet发送回车?【英文标题】:How to send carriage return over telnet? 【发布时间】:2011-05-08 17:50:52 【问题描述】:

我正在使用 Ubuntu 远程登录客户端。 我正在尝试通过我建立的 telnet 连接发送 2 行。

例如:

> telnet en.wikipedia.org 80
  GET /wiki/Main_Page http/1.1   <CR>                            // line 1
  Host: en.wikipedia.org         <CR>                            // line 2
  <CR>

CR 代表回车。 问题是在输入第 1 行后,按 CR ,该行将通过 telnet 连接发送。之后我无法立即发送第 2 行。

有人可以帮忙吗?

【问题讨论】:

您是否尝试过使用 '\' 转义 ,即 GET /wiki/Main_Page http/1.1 \ 指出这一点有点晚了,但是 - 就像 @Mark 在他的评论中暗示的那样 - 你不能只发送一个 \r 自己的字符。如果您要发送正常的行尾,则必须发送 \r\n(回车 + 新行)字符对 - 如果您打算仅发送回车以移动 current 位置到行首不前进到下一行,那么您必须发送\r\0,即一个回车符,然后是一个空字符。 【参考方案1】:

您可以在 telnet 中设置 crlf 选项。您可以通过在远程登录会话期间键入转义字符 (^]),然后“切换 crlf”来执行此操作。一种可能更简洁的方法是在建立连接之前指定它:

$ telnet
telnet> toggle crlf
Will send carriage returns as telnet <CR><LF>.
telnet> open mailhost smtp

【讨论】:

在 windows 8.1 上你应该使用“set crlf”而不是“toggle crlf”【参考方案2】:

当您在 Telnet 客户端中操作时,向客户端发送换行符或回车控制代码,将直接发送到主机。

最简单的方法是从另一个文本编辑器复制/粘贴 HTTP GET 请求,以便将换行符嵌入到文本中。

【讨论】:

澄清一下,似乎在 telnet 会话中按 enter 键将始终发送 \r&lt;NULL&gt;\r\n。在行尾仅传输\n 的唯一方法是从其他地方(例如编辑器)复制/粘贴它。【参考方案3】:

试试 Ctrl+Shift+Enter 我在 Mac OS Mojave 终端上试过。

【讨论】:

【参考方案4】:

真正的原因是这个。

对于windows用户,众所周知cmd默认是不区分大小写的。

但是在windows下,telnet的编辑界面是区分大小写的!

对于 unix、Ubuntu 等也是如此。

如果你输入:GET /wiki/Main_Page http/1.1,你会得到错误的结果。

如果你输入:GET /wiki/Main_Page HTTP/1.1,你会得到你想要的结果。

这个 telnet 问题花了我几个小时,该死。

【讨论】:

以上是关于如何通过telnet发送回车?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Telnet 发送字符串?

如何通过 SSH 连接向 Telnet 发送命令

如何通过 telnet 发送 POST 请求

通过 telnet 发送击键

使用telnet发送HTTP请求报文

在 C# 中通过 Telnet 发送和接收命令