最近はネットワーク プログラミング (特に P2P システム) を扱っています。私が扱う通常のプログラムは、どこかに次のようなものがあります(独自のスレッドで実行されています):
while True:
handle(receive())
依存する一連の送受信アクションを処理するにはどうすればよいですか。たとえば、次のようなものが必要な場合:
def inviteNode(receiver):
send(receiver, INVITE)
if receive() == OK:
send(receiver, SOME_INFORMATION)
...
互いに依存し、特定の順序を持ついくつかの送受信アクションを意味します。上記のようなものがあると便利ですinviteNode()
(プロトコルのすべてのステップがコード内の同じ場所にあり、コードを見るだけで順序をたどることができるため) がreceive()
、リッスン ループ外の呼び出しはうまくいきません。どちらreceive()
がデータを受信するかをどのように決定する必要があるためです。
これに対する唯一の解決策は、グローバルな状態を持つことですか? 最初の操作を行った後、その特定のノードからsend(receiver, INVITE)
を受信することを期待している場所を記憶する必要がありますか? これらの依存する送信/受信アクションがいくつかある場合、これは非常に複雑ではありませんか?OK
INVITE
PS: 念のため: これは UDP 接続に関するものです。