可能重复:
如何编写一个同时也是客户端的扭曲服务器?
如何创建一个带有扭曲的 tcp 客户端服务器应用程序,服务器也可以在其中发送请求,而不仅仅是回答它们?有点像 p2p 应用程序,但客户端总是启动连接。由于我不知道来自服务器的请求何时会发生,所以我不知道一旦反应器启动我该怎么做。
可能重复:
如何编写一个同时也是客户端的扭曲服务器?
如何创建一个带有扭曲的 tcp 客户端服务器应用程序,服务器也可以在其中发送请求,而不仅仅是回答它们?有点像 p2p 应用程序,但客户端总是启动连接。由于我不知道来自服务器的请求何时会发生,所以我不知道一旦反应器启动我该怎么做。
你要问自己的问题是:服务器为什么要发送请求?
大概世界上发生了一些事情会促使服务器发送请求;它不会随意做。即使它是随机的,世界上发生的事情也将是“过去了一些随机的时间”。换句话说,callLater(random(...), doSomething)
.
当您使用 Twisted 编写程序时,您首先要设置对事件做出反应的方法。然后你运行反应器 - 即“对事件做出反应的东西” - 永远。您可以随时设置新的方式来响应传入的网络事件(reactor.connectTCP
、、reactor.listenTCP
)reactor.callLater
或拆除现有的等待事件( protocol.loseConnection
、、、port.stopListening
)delayedCall.cancel
。您不需要重新启动反应器;事实上,真的,在反应器运行之前你应该做的唯一一件事就是做reactor.callWhenRunning(someFunctionThatListensOrConnects)
,然后写someFunctionThatListensOrConnects
来做你所有的初始设置。一旦反应器已经运行,该设置就会发生,这表明您不需要提前做任何事情;反应堆完全能够在运行时改变其配置。
如果导致服务器向客户端 B 发送事件的事件是客户端 A 向它发送消息的事实,那么常见问题解答会回答您的问题,“我如何在一个连接上进行输入导致在另一个连接上输出? ”