2014-09-22 46 views
2

我用QTcpSocket创建了一个简单的telnet服务器。当(telnet)客户端一次发送一行命令时,它很好用。使用QTcpSocket接收终端上/下键

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

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

回答

-1

你告诉你用QTcpSocket编程了一个telnet服务器,并且你对telnet客户端什么也没有说......是一个商业的telnet客户端?你有自己的程序吗?

如果你的问题是

“我怎么能强迫Telnet客户端发送这些字符(不 需要按回车)”

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

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

+0

我的Telnet服务器应用程序应适用于所有的Telnet客户端,并假定它们支持的xterm/VT100/ANSI代码等。我不想为一个单一的Telnet客户端程序。 – TSG 2014-09-23 13:42:06

+0

@GenerationDSystems:你是对的,这正是我的意思:如果你的问题是“我如何强制telnet客户端做某事”,那么我的答案是“它取决于你使用的是哪一个telnet客户端”。 ..我很确定缓冲不会发生在'QTcpSocket'上,它正在侦听接收一些数据...所以服务器端你应该没问题......无论如何你没有与我们分享你的代码,所以我不知道你在做什么,所以我只是猜测... – 2014-09-23 13:46:35

+0

我没有相关的代码分享。我的问题更通用。我是否通过在输入流上查找代码来处理此问题? Telnet客户端默认使用“LINEMODE”工作吗?不知道如何处理这个问题 – TSG 2014-09-23 14:10:05