Получите ключи терминала вверх / вниз, используя QTcpSocket

Я создал простой сервер Telnet, используя QTcpSocket. Это прекрасно работает, когда (telnet) клиент отправляет команду по одной строке за раз.

Теперь я хотел бы, чтобы мой сервер Telnet перехватывал клавиши со стрелками вверх / вниз, чтобы я мог вызывать предыдущие команды от клиента. Когда я нажимаю вверх / вниз на клавиатуре в клиенте telnet, я вижу ^ [[A на экране, но я не думаю, что он отправляется на сервер.

Есть ли способ заставить клиента telnet отправлять эти символы (без необходимости нажимать ввод)? я подозреваемый что это связано с небуферизованным режимом, но в документах говорится, что QTcpSocket не может сделать небуферизованный режим. Я на правильном пути? Есть ли способ сделать это?

2

Решение

Похоже, решение состоит в том, что сервер telnet должен указать клиенту перейти в символьный режим. Это можно сделать, отправив контрольные последовательности IAC. Пример здесь:

Перевести клиент telnet в символьный режим

2

Другие решения

Вы сказали, что запрограммировали сервер Telnet, используя QTcpSocket а ты ничего не сказал про клиент telnet … это коммерческий клиент telnet? Вы запрограммировали это самостоятельно?

Если ваш вопрос

«Как я могу заставить клиента Telnet отправлять эти символы (без
нужно нажать ввод)

тогда вы должны рассказать нам о клиенте telnet … в противном случае, как мы можем вам помочь? Если вы используете клиент telnet из командной строки Linux, то, я думаю, вы должны прочитать о LINEMODE (просматривая веб-страницы, вы можете легко узнать подробности об этом).

Документация QTcpSocket говорит, что вы не можете открыть его в QIODevice::Unbuffered режим, но это не означает, что вы не сможете отправлять / получать отдельные символы …

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector