如何通过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 行。
有人可以帮忙吗?
【问题讨论】:
您是否尝试过使用 '\' 转义\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<NULL>
或 \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发送回车?的主要内容,如果未能解决你的问题,请参考以下文章