【问题标题】:How to send carriage return over telnet?如何通过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,即一个回车符,然后是一个空字符。

标签: tcp console client telnet


【解决方案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 问题花了我几个小时,该死。

    【讨论】:

      猜你喜欢
      • 2011-05-30
      • 2020-08-16
      • 2017-04-30
      • 2017-10-30
      • 2016-05-15
      • 1970-01-01
      • 2015-02-19
      • 2012-08-04
      • 2014-11-02
      相关资源
      最近更新 更多