如何通过twisted.conch.telnet进行Telnet?

| 我了解,不赞成使用twisted.protocols.telnet的Telnet。但是,我看不到twisted.conch.telnet中更新的Telnet如何替换它。我写了一段非常简单的telnet身份验证代码,内容如下:
from twisted.protocols.telnet import Telnet

class MyProtocol(Telnet):

    def welcomeMessage(self):
        return \"Hi, Welcome to my telnet server\"

    def loginPrompt(self):
        return \"Who are you ?\"

    def checkUserAndPass (self,u,p):
        # some stuff here

    def telnet_Command(self, cmd):
        self.transport.write(\"you typed \" + cmd)
它工作正常,但是较新的Telnet类没有这些Standard方法。我也签出了AuthenticatingTelnetProtocol,但是其中大部分没有记录在案。有人可以指出一个示例,该示例与上面的代码(或多或少)相同或将其重写吗?提前致谢     
已邀请:
“ 1”和“ 2”之间的主要区别在于,前者实现了Telnet协议(RFC 854)的一部分,并添加了一些“便利”功能,该功能适用​​于标准的用户名/密码登录样式会话,而后者则实现了所有Telnet协议,并将“便利性”内容留给应用程序开发人员。 幸运的是,这种“便利”功能并不难实现。基本上有两件事:从客户端解析行,并根据连接所处的阶段(或“状态”)调用不同的方法。
LineReceiver
会做前者,而后者很简单。因此,例如:
from twisted.protocols.basic import LineReceiver
from twisted.conch.telnet import TelnetProtocol

class SimpleTelnetSession(LineReceiver, TelnetProtocol):

    def connectionMade(self):
        self.transport.write(\'Username: \')
        self.state = \'USERNAME\'

    def lineReceived(self, line):
        getattr(self, \'telnet_\' + self.state)(line)

    def telnet_USERNAME(self, line):
        self.username = line
        self.transport.write(\'Password: \')
        self.state = \'PASSWORD\'

    ...
这或多或少是“ 5”正在实现的。     

要回复问题请先登录注册