簡體   English   中英

python扭曲簡單的服務器客戶端

[英]python twisted simple server client

我正在嘗試構建一個簡單的“當天的報價”服務器和客戶端從扭曲的教程文檔中修改。 我希望從客戶那里打印出“當天的報價”以證明溝通。 但是,據我所知,客戶端沒有連接。 這是我的代碼。

服務器

from twisted.python import log
from twisted.internet.protocol import Protocol
from twisted.internet.protocol import Factory
from twisted.internet.endpoints import TCP4ServerEndpoint
from twisted.internet import reactor

class QOTD(Protocol):
    def connectionMade(self):
        self.transport.write("An apple a day keeps the doctor away\r\n") 
        self.transport.loseConnection()

class QOTDFactory(Factory):
    def buildProtocol(self, addr):
        return QOTD()

# 8007 is the port you want to run under. Choose something >1024
endpoint = TCP4ServerEndpoint(reactor, 8007)
endpoint.listen(QOTDFactory())
reactor.run()

客戶

import sys
from twisted.python import log
from twisted.internet import reactor
from twisted.internet.protocol import Factory, Protocol
from twisted.internet.endpoints import TCP4ClientEndpoint

class SimpleClient(Protocol):
    def connectionMade(self):
        log.msg("connection made")
        #self.transport.loseConnection()

    def lineReceived(self, line):
        print "receive:", line

class SimpleClientFactory(Factory):
    def buildProtocol(self, addr):
        return SimpleClient()

def startlog():
    log.startLogging(sys.stdout)

point =  TCP4ClientEndpoint(reactor, "localhost", 8007)
d = point.connect(SimpleClientFactory)
reactor.callLater(0.1, startlog)
reactor.run()
  • 傳遞SimpleClientFactory的實例,而不是將類本身傳遞給point.connect()
  • 如果使用lineReceived則從twisted.protocol.basic.LineReceiver而不是Protocol中lineReceived
  • 調用addErrback上的結果endpoint.listenpoint.connect處理錯誤

暫無
暫無

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

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