Я создал простой сервер Telnet, используя QTcpSocket. Это прекрасно работает, когда (telnet) клиент отправляет команду по одной строке за раз.
Теперь я хотел бы, чтобы мой сервер Telnet перехватывал клавиши со стрелками вверх / вниз, чтобы я мог вызывать предыдущие команды от клиента. Когда я нажимаю вверх / вниз на клавиатуре в клиенте telnet, я вижу ^ [[A на экране, но я не думаю, что он отправляется на сервер.
Есть ли способ заставить клиента telnet отправлять эти символы (без необходимости нажимать ввод)? я подозреваемый что это связано с небуферизованным режимом, но в документах говорится, что QTcpSocket не может сделать небуферизованный режим. Я на правильном пути? Есть ли способ сделать это?
Похоже, решение состоит в том, что сервер telnet должен указать клиенту перейти в символьный режим. Это можно сделать, отправив контрольные последовательности IAC. Пример здесь:
Вы сказали, что запрограммировали сервер Telnet, используя QTcpSocket
а ты ничего не сказал про клиент telnet … это коммерческий клиент telnet? Вы запрограммировали это самостоятельно?
Если ваш вопрос
«Как я могу заставить клиента Telnet отправлять эти символы (без
нужно нажать ввод)
тогда вы должны рассказать нам о клиенте telnet … в противном случае, как мы можем вам помочь? Если вы используете клиент telnet из командной строки Linux, то, я думаю, вы должны прочитать о LINEMODE
(просматривая веб-страницы, вы можете легко узнать подробности об этом).
Документация QTcpSocket
говорит, что вы не можете открыть его в QIODevice::Unbuffered
режим, но это не означает, что вы не сможете отправлять / получать отдельные символы …