编写p2p客户端/服务器应用程序

时间:2013-01-19 05:03:28

标签: python twisted

  

可能重复:
  How to write a twisted server that is also a client?

如何创建一个带有twisted的tcp客户端服务器应用程序,服务器也可以发送请求,而不仅仅是回答它们?有点像p2p应用程序,但客户端始终启动连接。由于我不知道服务器发出的请求何时会发生,所以一旦启动反应堆,我就不知道如何做到这一点。

1 个答案:

答案 0 :(得分:1)

您必须问自己的问题是:服务器为什么要发送请求?

据推测,世界上发生了一些提示服务器发送请求的事情;它不会随便做。即使它是随机发生的,世界上发生的事情也将是“一些随机的时间已经过去”。换句话说,callLater(random(...), doSomething)

当您使用Twisted编写程序时,首先要设置对事件做出反应的方法。然后你运行反应堆 - 即“对事件作出反应的东西” - 永远。您可以随时设置新的方式来响应传入的网络事件(reactor.connectTCPreactor.listenTCPreactor.callLater)或拆除现有的等待事件(protocol.loseConnection,{{1 },port.stopListening)。你不需要重新启动反应堆;实际上,在反应堆运行之前,你应该做的唯一事情就是做delayedCall.cancel,然后写reactor.callWhenRunning(someFunctionThatListensOrConnects)来做你所有的初始设置。一旦反应堆运行,就会发生这种情况,这表明你不需要提前做任何事情;反应堆完全能够在运行时改变其配置。

如果导致服务器向客户端B发送事件的事件是客户端A向其发送了一条消息,那么您的问题将通过常见问题解答回答,“how do I make input on one connection result in output on another?