如何通过 telnet 发送回车符?

19

我正在使用Ubuntu的telnet客户端。

我想要通过建立的telnet连接发送两行文字。

例如:

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

CR代表回车符。

问题在于输入第一行后,按下回车键(CR),该行将通过telnet连接发送。这就导致我不能立即发送第二行。

有人能帮忙解决吗?


你尝试过用 '' 转义 <CR> 吗?例如,GET /wiki/Main_Page http/1.1 <CR> - corriganjc
现在指出可能有点晚了,但是 - 就像@Mark在他的评论中暗示的那样 - 你绝不能只发送一个\r字符。如果你要发送一个正常的行尾,你必须发送一个\r\n(回车+换行)字符对 - 如果你只想发送一个回车符以将当前位置移动到行的开头而不是前进到下一行,那么你必须发送\r\0,即一个回车符,然后是一个空字符。 - SlySven
4个回答

41

在 Telnet 中,您可以设置 crlf 选项。您可以通过在 Telnet 会话期间键入转义字符 (^]),然后输入 "toggle crlf" 来执行此操作。也可以在建立连接之前指定。

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

在Windows 8.1上,您应该使用“set crlf”而不是“toggle crlf”。 - kirugan

13

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

实现您想要的最简单方法是从另一个文本编辑器复制/粘贴HTTP GET请求,使换行符嵌入到文本中。


3
澄清一下,在 Telnet 会话中按回车键似乎总是会发送 \r<NULL> 或者 \r\n。唯一传输行末只有 \n 的方式是从其他地方(如编辑器)复制粘贴。 - Mark

2

尝试使用Ctrl+Shift+Enter键组合

我在Mac OS Mojave终端上尝试过。


谢谢!那应该就是答案了。Ubuntu也适用。 - testing_22

1

真正的原因是这样的。

对于Windows用户来说,默认情况下,cmd不区分大小写。

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

对于Unix、Ubuntu等系统也是如此。

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

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

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


这不是一个 Telnet 问题。这是你不理解 HTTP 协议。 - Coroos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接