Python Twisted - 如何在Telnet或SSH中控制缓冲/非缓冲输入?

时间:2011-11-14 07:14:24

标签: python ssh twisted telnet

我想写一个Python Twisted服务器,为其客户端提供文本,我希望客户能够写回文本来操作服务器。我将使用Telnet,客户端将使用Putty或类似的终端...如果更容易做到这一点,我也愿意使用SSH。

我的问题是,如何配置服务器以便客户端可以发送原始的,无缓冲的字节(我不希望用户在命令后按Enter键)?另外,有没有办法在会话中更改配置,以便我可以在缓冲/未缓冲的字节之间来回切换?

我认为这是Telnet选项34“Linemode”--- http://www.freesoft.org/CIE/RFC/1700/10.htm

我只是不知道如何设置Twisted来使用它......

任何为Telnet或SSH设置此功能的帮助都表示赞赏! 谢谢!

1 个答案:

答案 0 :(得分:1)

twisted.conch.telnet.TelnetBootstrapProtocol是如何进行选项协商的一个很好的例子。它也恰好执行了一些LINEMODE协商。请查看the implementation了解详细信息,但这里有一个片段,显示服务器要求客户端启用linemode,naws和sga:

for opt in (LINEMODE, NAWS, SGA):
    self.transport.do(opt).addErrback(log.err)

如果协商失败,真实服务器可能希望执行比log.err更多的错误处理,因为客户端将处于可能不适合与服务器一起使用的状态。

另请查看Twisted附带的一些funky terminal demos。这些一次性处理很多。