我正在编写一个基于套接字的“python cmd
like”服务器模块,它可以支持cli交互式功能,例如自动完成或命令历史记录,通过简单的“telnet
”或“{{1 “客户端可以连接到服务器以在服务器端读取/设置某些内容。
搜索之后,有很多模块可以做“cmd”部分,比如python标准模块“nc
”或“cmd
”甚至是vty模拟器,但是,我找不到一个模块实际上可以直接绑定到套接字来检测按键,例如“ipython
”键或“tab
”客户端。他们中的大多数只能处理行读取,这不适合使用制表符按压或带有向上/向下按键的命令历史记录进行自动完成。
我认为这个问题可以简化为:
是否可以读取套接字按键输入非阻塞,然后以某种方式处理此键输入值服务器端 - 例如ASCII代码+ 1,然后回显到socket以在客户端显示?
感谢您的帮助。
答案 0 :(得分:1)
你想要的是不可能的。正如您所说,您希望编写一个基于cmd
的套接字,如服务器。服务器将打开套接字并侦听来自客户端的数据。现在可以逐个字符地读取套接字输入(这与非阻塞BTW不同),但这对你没有帮助。
由客户端程序决定如何以及何时发送数据。因此,如果客户端程序决定“吃掉”选项卡并控制字符,那么您将根本看不到它们。因此,如果您想逐个处理按键,您还需要一个客户端应用程序。