使用QTcpSocket接收终端上/下键

时间:2014-09-22 21:12:59

标签: c++ qt client telnet buffered

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

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

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

2 个答案:

答案 0 :(得分:2)

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

Forcing telnet client into character mode

答案 1 :(得分:-1)

你告诉过你使用QTcpSocket编写了一个telnet服务器而你没有说telnet客户端...是一个商业telnet客户端?你有自己编程吗?

如果你的问题是

  

“如何强制telnet客户端发送这些字符(没有   需要按回车键“”

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

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