Я пытаюсь создать клиент / сервер, используя Twisted.
Я хотел бы создать демон, который будет подключен к другому серверу в качестве клиента и выступать в качестве сервера для других клиентов.
Я написал что-то подобное, что я думаю, описать мою проблему:
server = sys.argv[1]
control_port = 8001
class ControlClient(protocol.Protocol):
def makeConnection(self, transport):
[some code here -snip-]
self.firstOrder(order, transport)
def firstOrder(self, action, transport):
self.t = transport
self.t.write(action + "\0")
def sendOrder(self, action):
self.t.write(action + "\0")
def dataReceived(self, data):
[some code here -snip-]
[HERE I WANT TO SEND DATA TO CLIENTS CONNECTED TO MY TWISTED SERVER, USING CONTROL SERVER]
class ControlServer(ControlClient):
def dataReceived(self, data):
print "client said " + data
def makeConnection(self, transport):
self.t = transport
self.t.write("make connection")
print "make connection"
def sendData(self, data):
self.t.write("data")
class ClientFactory(protocol.ClientFactory):
protocol = ControlClient
def clientConnectionFailed(self, connector, reason):
print "Connection failed - goodbye!"
reactor.stop()
def clientConnectionLost(self, connector, reason):
print "Connection lost - goodbye!"
reactor.stop()
class ServerFactory(protocol.ServerFactory):
protocol = ControlServer
def main():
c = ClientFactory()
reactor.connectTCP(server, control_port, c)
s = ServerFactory()
reactor.listenTCP(9000, s)
reactor.run()
if __name__ == '__main__':
main()
Как видите, я хотел бы отправить (в качестве сервера) некоторые полученные данные (в качестве клиента). Моя проблема, конечно, заключается в том, что мой ServerControl не создан в моем ClientControl, поэтому у меня нет доступа к транспорту, который необходим для отправки данных клиентам.
Извините, если мне не понятно, я новичок в Python и Twisted, а английский не мой основной язык :(
Не стесняйтесь спрашивать, если вы что-то упустили!
Заранее спасибо за любую помощь =)