0

ねじれたチュートリアルドキュメントから変更された単純な「今日の引用」サーバーとクライアントを構築しようとしています。コミュニケーションを証明するために、クライアントから「今日の見積もり」を印刷してほしい。しかし、私が知る限り、クライアントは接続していません。これが私のコードです。

サーバ

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()
4

1 に答える 1

2
  • クラス自体ではなく、SimpleClientFactoryのインスタンスをpoint.connect()
  • 使用する場合は、Protocolではなくtwisted.protocol.basic.LineReceiverのサブクラスSimpleClientlineReceived
  • endpoint.listenとの結果についてaddErrbackを呼び出して、point.connectエラーを処理します
于 2012-12-09T16:46:24.060 に答える