Как обрабатывать нажатие клавиш в сокете Python?
Я пишу сокет на основе "питона cmd
например, "серверный модуль, который может поддерживать такие интерактивные функции, как автозаполнение или история команд, делая это простым"telnet
" или же "nc
"Клиентская сторона может подключиться к серверу для чтения / установки чего-либо на серверной стороне.
после поиска, есть много модулей, которые могут сделать "cmd" часть, такую как стандартный модуль python "cmd
" или же "ipython
"или даже симулятор vty, однако, я не могу найти модуль, который действительно может привязываться к сокету напрямую, чтобы обнаружить нажатия клавиш, такие как"tab
"ключ или"control+c
"на стороне клиента. Большинство из них просто способны обрабатывать чтение строк, которые не подходят для автозаполнения нажатием вкладки или истории команд при нажатии вверх / вниз.
Я думаю, что этот вопрос можно упростить до:
Возможно ли прочитать неблокирование ввода с помощью нажатия клавиш сокета, затем обработать это значение ввода ключа каким-либо образом на стороне сервера - например, код ASCII + 1, а затем вернуть его обратно в сокет, чтобы показать на стороне клиента?
Спасибо за помощь.
1 ответ
То, что вы хотите, не возможно. Как вы говорите, вы хотите написать сокет на основе cmd
как сервер. Сервер откроет сокет и прослушает данные от клиента. Теперь можно читать вводимые сокетом символы за символом (что не совпадает с неблокирующим BTW), но это вам не поможет.
Клиентская программа должна решить, как и когда отправлять данные. Так что, если клиентская программа решит "съесть" вкладку и управлять символами, то вы их просто не увидите. Поэтому, если вы хотите обрабатывать нажатия клавиш один за другим, вам также понадобится клиентское приложение.