我最近正在处理网络编程(尤其是 P2P 系统)。我处理的常用程序在某个地方有这样的东西(在它自己的线程中运行):
while True:
handle(receive())
如何处理一系列相关的发送/接收操作。例如,当我想要类似的东西时:
def inviteNode(receiver):
send(receiver, INVITE)
if receive() == OK:
send(receiver, SOME_INFORMATION)
...
我的意思是几个相互依赖并具有一定顺序的发送/接收操作。有类似上面的东西会很好inviteNode()
(因为协议的所有步骤都在代码中的同一位置,你可以通过查看代码来追溯顺序),但是receive()
在我的监听循环之外调用只是赢了t 这样做,因为应该如何决定哪个receive()
可以接收数据。
拥有全局状态是解决此问题的唯一方法吗?在做完第一个之后send(receiver, INVITE)
,我是否必须记住某个地方,我希望OK
从那个特定的节点接收到一个,我刚刚发送INVITE
到?当我有几个不同的这些相关的发送/接收操作时,这不是很复杂吗?
PS:只是为了确保:这是关于 UDP 连接的。