2

我使用 QTcpSocket 创建了一个简单的 telnet 服务器。当(telnet)客户端一次发送一行命令时,它工作得很好。

我现在希望我的 telnet 服务器捕获上/下箭头键,以便我可以从客户端调用以前的命令。当我在 telnet 客户端的键盘上按向上/向下键时,我看到 ^[[A 在屏幕上,但我认为它不会发送到服务器。

有没有办法强制 telnet 客户端发送这些字符(无需按 Enter)?我怀疑这与无缓冲模式有关,但文档说 QTcpSocket 不能做无缓冲模式。我在正确的轨道上吗?有没有办法做到这一点?

4

2 回答 2

3

解决方案似乎是 telnet 服务器必须告诉客户端进入字符模式。这可以通过发送 IAC 控制序列来完成。这里有一个例子:

强制 telnet 客户端进入字符模式

于 2014-09-23T14:57:01.320 回答
0

您说您使用 telnet 服务器编写了一个 telnet 服务器QTcpSocket,但您对 telnet 客户端只字未提……是商业 telnet 客户端吗?你自己编程过吗?

如果你的问题是

“如何强制 telnet 客户端发送这些字符(无需按 Enter)”

那么您必须告诉我们有关 telnet 客户端的信息……否则我们如何为您提供帮助?如果您使用 Linux 命令行 telnet 客户端,那么我认为您应该阅读一下LINEMODE(在网上冲浪,您可以很容易地了解它的详细信息)。

的文档QTcpSocket告诉您无法在QIODevice::Unbuffered模式下打开它,但这并不意味着您将无法发送/接收单个字符...

于 2014-09-23T06:04:09.007 回答