tir*_*oto 6 python client twisted
我正在尝试使用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()
Run Code Online (Sandbox Code Playgroud)
如您所见,我想(作为服务器)发送一些收到的数据(作为客户端).我的问题当然是我的ClientControl没有在我的ClientControl中实例化,所以我无法访问传输数据到客户端.
对不起,如果我不可理解,我是Python和Twisted的新手,英语不是我的主要语言:(如果你遗漏了什么,请随时问一下!
在此先感谢任何帮助=)
您似乎缺少的唯一一件事是您可以保留客户端连接列表,并使该列表可供尝试向所有客户端发送数据的代码使用。
Twisted FAQ 中有一个这样的例子:http://twistedmatrix.com/trac/wiki/FrequentlyAskedQuestions#HowdoImakeinputononeconnectionresultinoutputonanother
该示例只有一个工厂,但想法是相同的。要处理两个工厂的情况,只需为一个工厂提供对另一个工厂的引用即可。
| 归档时间: |
|
| 查看次数: |
5705 次 |
| 最近记录: |