如何在python套接字中处理按键?

时间:2014-05-18 05:42:26

标签: python sockets interactive keystroke

我正在编写一个基于套接字的“python cmd like”服务器模块,它可以支持cli交互式功能,例如自动完成或命令历史记录,通过简单的“telnet”或“{{1 “客户端可以连接到服务器以在服务器端读取/设置某些内容。

搜索之后,有很多模块可以做“cmd”部分,比如python标准模块“nc”或“cmd”甚至是vty模拟器,但是,我找不到一个模块实际上可以直接绑定到套接字来检测按键,例如“ipython”键或“tab”客户端。他们中的大多数只能处理行读取,这不适合使用制表符按压或带有向上/向下按键的命令历史记录进行自动完成。

我认为这个问题可以简化为:

是否可以读取套接字按键输入非阻塞,然后以某种方式处理此键输入值服务器端 - 例如ASCII代码+ 1,然后回显到socket以在客户端显示?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你想要的是不可能的。正如您所说,您希望编写一个基于cmd的套接字,如服务器。服务器将打开套接字并侦听来自客户端的数据。现在可以逐个字符地读取套接字输入(这与非阻塞BTW不同),但这对你没有帮助。

由客户端程序决定如何以及何时发送数据。因此,如果客户端程序决定“吃掉”选项卡并控制字符,那么您将根本看不到它们。因此,如果您想逐个处理按键,您还需要一个客户端应用程序。