我需要用Python从头开始编写一个可靠的、完全排序的组播系统。我不能使用任何外部库,但是可以使用一个中央序列号生成器。有两种方法来实现这个系统:
1.编写高效的系统,将唯一编号附加到每个多播消息上,使序列号生成器组播接收到的消息编号,并发送ACK和NACK。
2.编写低效的洪泛系统,其中每个多播程序员仅简单地重新发送其接收到的每个消息一次(除非该特定的多播程序员发送了该消息)。
我可以使用第二个选项,也倾向于这么做。我目前正在进行UDP多播消息(似乎是唯一的选择),但这意味着一些消息可能会丢失。这意味着我必须能够唯一标识每个发送的UDP消息,以便根据第2种方法进行重发。我应该真的生成唯一的数字(例如使用发送方地址和计数器)并将它们打包到每个UDP消息中吗?我该如何操作?在Python中如何接收单个UDP消息而不是数据流(即socket.recv)?
1.编写高效的系统,将唯一编号附加到每个多播消息上,使序列号生成器组播接收到的消息编号,并发送ACK和NACK。
2.编写低效的洪泛系统,其中每个多播程序员仅简单地重新发送其接收到的每个消息一次(除非该特定的多播程序员发送了该消息)。
我可以使用第二个选项,也倾向于这么做。我目前正在进行UDP多播消息(似乎是唯一的选择),但这意味着一些消息可能会丢失。这意味着我必须能够唯一标识每个发送的UDP消息,以便根据第2种方法进行重发。我应该真的生成唯一的数字(例如使用发送方地址和计数器)并将它们打包到每个UDP消息中吗?我该如何操作?在Python中如何接收单个UDP消息而不是数据流(即socket.recv)?