我知道这是重复的 Send multiple messages to server from twisted client,但那里的答案确实没有帮助,我仍然对如何解决这个问题有疑问。
为了测试,我写了一个简单的echo服务器,只是回复它收到的任何消息回到客户端,并且我的客户端代码:
class InsertRecord(Protocol):
def __init__(self, message):
print("Protocol initialized")
self.msg = message
def connectionMade(self):
self.transport.write(self.msg)
def sendMessage(self, msg):
self.transport.write("MESSAGE %s\n" % msg)
def dataReceived(self, data):
print("data")
reactor.stop()
class ClientInsertFactory(ClientFactory):
def __init__(self, dataRecord):
self.dataRecord = dataRecord
print("Client factor init")
def buildProtocol(self, addr):
return InsertRecord(self.dataRecord)
def startedConnecting(self, connector):
print("Started to connect to IS Server")
reactor.connectTCP("localhost", 2222, ClientInsertFactory("message1"))
reactor.run()
connector = reactor.connectTCP("localhost", 2222, ClientInsertFactory("message2"))
reactor.run()
我知道我无法停止并重新启动反应堆,但是,我无法想办法解决这个问题。我想要的是能够与服务器生成多个会话,而不会被对reactor.run()的调用阻止。 根据之前链接的帖子,我希望能够在协议之外调用sendData。