试图在McKellar& amp;&amp ;;费蒂格

时间:2013-06-17 08:29:39

标签: python python-2.7 twisted

我试图修补Twisted,看看它到底是什么。所以我买了Jessica McKellar& Sons出版的第2版“Twisted”一书。 Abe Fettig,下载并安装了Python,Twisted和zope.interface,并尝试输入并运行第12页的第一个示例:

from twisted.internet import reactor, protocol

class EchoClient(protocol.Protocol):
    def connectionMade(self):
        self.transport.write("Hello, Stupid!")

    def dataReceived(self, data):
        print "Server said: ", data
        self.transport.loseConnection()

class EchoFactory(protocol.ClientFactory):
    def BuildProtocol(self, addr):
        return EchoClient()

    def clientConnectionFailed(self, connector, reason):
        print "Connection Failed."
        reactor.stop()

    def clientConnectionLost(self, connector, reason):
        print "Connection lost."
        reactor.stop()

reactor.connectTCP("localhost", 8000, EchoFactory())
reactor.run()

也有服务器部分。我运行了服务器程序,然后在另一个cmdline窗口中运行了客户端程序(上面)。它产生了:

"Unhandled Error
Traceback..  (several lines - see attached screen-capture (oops - this won't let me attach images!)

文件“C:\ Python27 \ lib \ site-package \ twisted \ python \ context.py”,第81行,在callWithContext中 --- --- 文件“C:\ Python27 \ lib \ site-packages \ twisted \ internet \ selectreactor.py”,第151行,在_doReadOrWrite中为什么= getattr(selectable,method)() doConnect self._connectDone()中的文件“C:\ Python27 \ lib \ site-packages \ twisted \ internet \ tcp.py”,第593行 ..     exceptions.TypeError:'NoneType'对象不可调用。     连接失败。

如果我是Python专家,我可能会更清楚这个问题,但我对它很陌生 - 来自C#,F#,C ++背景。

您认为可能导致此问题 - 还有其他人遇到此问题吗?令人沮丧的是 - 如果我甚至无法获得第一个完全无关紧要的例子,我不能说这是一项简单的技术!

我使用的是Windows 8 x64,Python 2.7.5,Twisted 13.0.0(安装程序是Twisted-13.0.0.win-amd64-py2.7.msi),我添加了我的python(C :\ Python27)和脚本到PATH env变量。

1 个答案:

答案 0 :(得分:2)

我在这里开枪,但我认为问题在于一个小错字 - 而不是BuildProtocol,它应该是buildProtocol。当EchoFactory实例尝试返回新协议实例时会出现错误 - 它返回None而不是EchoClient实例,后来这个None很麻烦。