[英]Making Twisted Python simple client server example to work
我是Twisted python的新手(Twisted 12.x,python 2.6.x,不幸的是,我必須使用舊版本),並且我正在運行客戶端/服務器,其中服務器回顯來自客戶端的簡單消息(第2章示例) Twisted O'reilly的書籍)我正在終端中運行服務器,然后在單獨的終端中運行客戶端。 但是客戶端和服務器卡住了(不返回)。 出什么事了?
服務器:
from twisted.internet import protocol, reactor
class Echo(protocol.Protocol):
def dataReceived(self, data):
self.transport.write(data)
class EchoFactory(protocol.Factory):
def buildProtocol(self, addr):
return Echo()
reactor.listenTCP(50000, EchoFactory())
reactor.run()
客戶:
from twisted.internet import reactor, protocol
class EchoClient(protocol.Protocol):
def connectionMade(self):
self.transport.write("Hello, world!")
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", 50000, EchoFactory())
reactor.run()
您的dataReceived
, clientConnectionFailed
和clientConnectionLost
方法沒有縮進,這意味着它們只是永遠不會被調用的自由函數,而不是覆蓋Protocol
或ClientFactory
上的方法。 因此,您的客戶端代碼將獲得默認的dataReceived
實現,即“不執行任何操作”。
另外,順便說一句,Python 2.6不在安全支持范圍內,因此不會接收更新。 請至少升級到2.7.9版本。 您還應該升級到Twisted的最新版本,尤其是對於新代碼的時候。 確實沒有合法的理由使用這種古老的軟件; 這樣做既危險又不負責任。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.