【问题标题】:Python Twisted -- how to control buffered/unbuffered input in Telnet or SSH?Python Twisted——如何在 Telnet 或 SSH 中控制缓冲/非缓冲输入?
【发布时间】:2011-12-28 10:30:33
【问题描述】:

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

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

我认为是 Telnet option 34 "Linemode" --- http://www.freesoft.org/CIE/RFC/1700/10.htm

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

感谢您为 Telnet 或 SSH 设置此设置的任何帮助!!! 谢谢!

【问题讨论】:

    标签: python ssh twisted telnet


    【解决方案1】:

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

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

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

    还可以查看 Twisted 附带的一些 funky terminal demos。它们一次处理大量字符。

    【讨论】:

      猜你喜欢
      • 2013-12-19
      • 1970-01-01
      • 2016-07-14
      • 2012-06-05
      • 1970-01-01
      • 2010-11-29
      • 2014-01-30
      • 1970-01-01
      相关资源
      最近更新 更多