t-io Java构建p2p网络
Java 构建p2p网络 这篇文章是一篇关于pbft算法实现的一篇补充文章,但是在这里不会涉及pbft的算法方面,所以可以当做一篇单独的文章食用。如果想查看关于区块链或者PBFT算法的文章,可以参考一下我的 文章 。 文章实现范围 这篇文章是构建一个p2p网络,需要拥有独立的ip地址(当然如果是在局域网内使用就无所谓了),不会涉及到内网穿透的一些实现方法,也就是说如果你是把自己电脑构建了一个p2p结点,则其他人的电脑是无法链接你电脑的结点的。 预备知识 p2p网络中,一个结点既是客户端也是服务端,可以实现任意时刻的双向的通信。因此在每个结点中,会维护一张客户端的表和一张服务端的表。我们可以从代码的方面来理解一下这个东西,如下图所示: 两个被方框圈住的表则是需要维护的表,如果在代码中的话,我们就可以使用List去保存这张表 客户端的表我们可以用来发送消息,而服务端的表我们可以用来控制群发。 这里我们可以解释和理解一下何为p2p。举例: 结点1想与结点2进行通信时:A1跑出来说,我有到结点2的通道,然后向结点2发出 request ,结点2的服务端接收到结点1(A1)发出来的消息的时,进行response。 这个时候,可能就会有人问:为什么不是结点1的服务端向结点2发出request呢,然后结点2再向服务端返回response?yes,这个是可以的,并且能够成功