2013-01-19 55 views

回答

1

你必須問自己的問題是:爲什麼服務器發送請求?

假設世界上發生了一些事情,會促使服務器發送請求;它不會隨意進行。即使它是隨機的,世界上發生的事情將是「一些隨機的時間已過去」。換句話說,callLater(random(...), doSomething)

當您使用Twisted編寫程序時,首先設置對事件作出反應的方法。然後你運行反應堆 - 即「對事件有反應的事物」 - 永遠。在任何時候,您都可以設置新的方法來應對傳入的網絡事件(reactor.connectTCP,reactor.listenTCP,reactor.callLater)或拆除現有的等待事件(protocol.loseConnection,port.stopListening,delayedCall.cancel)。你不需要重新啓動反應堆;實際上,在反應堆運行之前你應該做的唯一事情就是做reactor.callWhenRunning(someFunctionThatListensOrConnects),並且寫someFunctionThatListensOrConnects來完成你所有的初始設置。一旦反應堆已經運行,這種設置就會發生,這表明你不需要事先做任何事情;反應堆完全能夠在運行時改變其配置。

如果導致服務器的事件發送到客戶端B的事實,客戶端A發送它的消息的事件,那麼你的問題是由常見問題回答說:「how do I make input on one connection result in output on another?

+0

感謝您的答覆。我現在明白了很多,但是它讓我想到了另一個問題:我怎麼能有一個與網絡無關的事件,比如某些用戶輸入或按下按鈕? – sarcome

+0

你應該問一個單獨的問題。一定要問清楚你使用的GUI工具包。 – Glyph

相關問題