C++从零开始区块链:P2P模块之节点广播

之前忘了说了,现在补上
主要有以下几个方案

udp协议广播

该方案的优点是协议自身支持,实现简单,高效。但其缺点也是致命的,就是只能在同一局域网内才能进行广播,限制太大。

udp协议组播

和广播的方案差不多,虽然udp协议支持在外网上的组播,但很依赖于网络设备是否支持。很遗憾,现实中绝大部分的网络设备是不支持的,同样只能在同一局域网内有效。

节点轮询

该方案的优点是不受网络环境限制,不需要网络设备的支持。缺点是效率太低,网络中节点很少还可以接受,如果节点太多,光是每个节点都轮询一遍都需要好久。

节点分组轮询

这是目测最可行的一个方案,同时也是实现起来最麻烦的一个方案。先将所有节点分组,要保证每个节点至少存在与两个组内。节点对自己所在的组内进行轮询广播,组内其他节点接收到消息后,再在自己的另一个组内进行广播,达到一传十,十传百的效果。

本例中应用

在本例中,仅将消息发给了一个节点进行广播模拟,并未进行实际上的广播,等以后有时间了尝试使用节点分组轮询的方式进行广播。

你可能感兴趣的:(C++从零开始区块链)