使用QTcpSocket接收终端向上/向下键

Receive terminal up/down keys using QTcpSocket

本文关键字:终端 QTcpSocket 使用      更新时间:2023-10-16

我使用QTcpSocket创建了一个简单的telnet服务器。当(telnet)客户端一次只发送一行命令时,它非常有效。

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

有没有办法强制telnet客户端发送这些字符(无需按enter键)?我怀疑这与无缓冲模式有关,但文档说QTcpSocket不能进行无缓冲模式。我走对了吗?有办法做到这一点吗?

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

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

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

如果你的问题是

"如何强制telnet客户端发送以下字符(不需要按下回车键)"

然后你必须告诉我们telnet客户端的情况。。。否则我们能帮你什么?如果您使用Linux命令行telnet客户端,那么我认为您应该阅读有关LINEMODE的内容(在网上冲浪时,您可以很容易地详细了解它)。

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