Как обрабатывать нажатие клавиш в сокете Python?

Я пишу сокет на основе "питона cmd например, "серверный модуль, который может поддерживать такие интерактивные функции, как автозаполнение или история команд, делая это простым"telnet" или же "nc"Клиентская сторона может подключиться к серверу для чтения / установки чего-либо на серверной стороне.

после поиска, есть много модулей, которые могут сделать "cmd" часть, такую ​​как стандартный модуль python "cmd" или же "ipython"или даже симулятор vty, однако, я не могу найти модуль, который действительно может привязываться к сокету напрямую, чтобы обнаружить нажатия клавиш, такие как"tab"ключ или"control+c"на стороне клиента. Большинство из них просто способны обрабатывать чтение строк, которые не подходят для автозаполнения нажатием вкладки или истории команд при нажатии вверх / вниз.

Я думаю, что этот вопрос можно упростить до:

Возможно ли прочитать неблокирование ввода с помощью нажатия клавиш сокета, затем обработать это значение ввода ключа каким-либо образом на стороне сервера - например, код ASCII + 1, а затем вернуть его обратно в сокет, чтобы показать на стороне клиента?

Спасибо за помощь.

1 ответ

Решение

То, что вы хотите, не возможно. Как вы говорите, вы хотите написать сокет на основе cmd как сервер. Сервер откроет сокет и прослушает данные от клиента. Теперь можно читать вводимые сокетом символы за символом (что не совпадает с неблокирующим BTW), но это вам не поможет.

Клиентская программа должна решить, как и когда отправлять данные. Так что, если клиентская программа решит "съесть" вкладку и управлять символами, то вы их просто не увидите. Поэтому, если вы хотите обрабатывать нажатия клавиш один за другим, вам также понадобится клиентское приложение.

Другие вопросы по тегам