我试着摆弄一下Twisted,看看到底是怎么回事。所以我买了Jessica McKellar和Abe Fettig的书" Twisted ",第二版,下载并安装了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-window中运行了客户端程序(如上图所示)。它产生了:
"Unhandled Error
Traceback.. (several lines - see attached screen-capture (oops - this won't let me attach images!)文件方法第81行,在方法中-文件方法第151行,在方法中为什么=getattr( "C:\Python27\lib\site-package\twisted\python\context.py",,_doReadOrWrite )()文件"C:\Python27\lib\site-packages\twisted\internet\tcp.py",第593行,在doConnect self._connectDone()中..exceptions.TypeError:“NoneType”对象不可调用。连接失败。
如果我是Python专家,这个问题可能会更清楚,但我是个新手--有过C#,F#,C++的背景。
你认为是什么导致了这个问题--还有其他人遇到过这个问题吗?这是令人沮丧的-如果我甚至不能运行第一个完全微不足道的例子,我就不能说这是一项简单的技术!
我使用的是Windows8 x64,Python2.7.5,Twisted 13.0.0 (安装程序是Twisted-13.0.0.win-amd64-py2.7.msi),并且我已经将我的Python (C:\Python27)和脚本添加到路径环境变量中。
发布于 2013-06-17 22:49:45
我在这里是盲目的,但我认为问题出在一个小的拼写错误-而不是BuildProtocol,它应该是buildProtocol。当EchoFactory实例尝试返回新的协议实例时出现错误-它返回None而不是EchoClient实例,并且这个None稍后会很麻烦。
https://stackoverflow.com/questions/17143317
复制相似问题