尽管将切换设置为(请参见下面的示例),但我无法让 Telnet\r
在命令末尾仅发送 CR ( ) 。相反,Telnet 始终发送 CR-LF ( )。crlf
<CR><NUL>
\r\n
我的目标:从通过 RS-232 端口连接到蜂窝调制解调器的远程设备检索数据。目前,我正在使用 Telnet 发送数据请求。我有充分的理由相信这是可能的,并且我需要能够扩展和自动化。
要求:远程设备要求命令仅以 CR 结尾。
我对这个问题的理解:我认为额外的 LF 导致设备无法正确读取我的命令。更具体地说,我认为 LF 是每个命令留下的,并添加到下一个命令的开头。我推断这是因为重置设备后第一次向远程设备发出命令时,我实际上得到了正确的响应。然而,所有后续响应都表明设备不理解该命令。
详细信息:如果我启动 Telnet,并将其设置为返回十六进制值(set netdata
加号set prettydump
以使其更易于阅读),我可以看到行以 CR (hex=0d) 和 LF (hex=0a) 结尾,即使询问 Telnet仅以 CR 加 NULL 结束行。即,我预计最后一个字符是 00,而不是 0a。请参阅下面的代码片段(主机和端口替换为“x”)。仅供参考:“QD”是我的命令,它要求设备报告当前日期,“BADD”是设备在不理解命令时的响应。
$ telnet
telnet> toggle crlf
Will send carriage returns as telnet <CR><LF>.
telnet> toggle crlf
Will send carriage returns as telnet <CR><NUL>.
telnet> set netdata
Will print hexadecimal representation of network traffic.
telnet> set prettydump
Will print user readable output for "netdata".
telnet> open x.x.x.x xxxx
Trying x.x.x.x xxxx...
Connected to x.x.x.x.
Escape character is '^]'.
QD
> 0x0 51 44 0d 0a
< 0x0 42 41 44 44 0d 0a
BADD
我测试过的平台:使用 Telnet、inetutils-telnet 和 PuTTY 的 Ubuntu 18.04.1;使用 Cygwin、PuTTY 和 TeraTerm 的 Windows 7;使用 PuTTY 的 Windows 10。
类似帖子:有什么方法可以在 Telnet 中只发送“\n”吗?– 然而,另一篇文章中的问题是相反的:行结尾只需为 LF。
问题摘要:如何让 Telnet 在行尾仅发送 CR?