簡體   English   中英

使Twisted Python簡單的客戶端服務器示例正常工作

[英]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()

您的dataReceivedclientConnectionFailedclientConnectionLost方法沒有縮進,這意味着它們只是永遠不會被調用的自由函數,而不是覆蓋ProtocolClientFactory上的方法。 因此,您的客戶端代碼將獲得默認的dataReceived實現,即“不執行任何操作”。

另外,順便說一句,Python 2.6不在安全支持范圍內,因此不會接收更新。 請至少升級到2.7.9版本。 您還應該升級到Twisted的最新版本,尤其是對於新代碼的時候。 確實沒有合法的理由使用這種古老的軟件; 這樣做既危險又不負責任。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM