关于代码介绍方法,可以去看我的博客。里面介绍了一些功能的实现思路和方法,以及使用到的一些库的介绍。

使用方法

打包

首先在maven中更改jar包生成位置

然后使用命令生成jar包

mvn package

运行方法

在IDEA运行着将第二块区域进行注释(第一块区域不要注释),使用jar包运行则将第一块区域进行注释(第二块区域不要注释)

包运行方法

java -jar 包名 ip地址 端口号 序号 文件保存位置

ip地址和端口号代表节点作为server需要占用ip和端口号

序号:节点的序号,必须独一无二

文件保存位置

例如:

java -jar oldpbft-jar-with-dependencies.jar 127.0.0.1 8080 0 C:\\Users\\XiaoHui\\Desktop\\data\\

因此,你可以在本机上运行多个节点(保证端口号和序号不同即可)。

在IDEA中运行的方法

首先配置启动,允许多个main执行

然后,每次启动一个节点,更改 i 就可以启动不同的节点。

int i = 0;

String ip = "127.0.0.1";

int port = 8080 + i;

StartConfig.basePath = "C:\\Users\\XiaoHui\\Desktop\\data\\";

int index = i;

注意点

程序会自动新建一个json文件,里面保存节点的ip信息,StartConfig.basePath代表json文件保存位置。

如果结束所有节点,然后重新启动程序,需要将ip.json中的内容全部删除。(比如说你启动了1节点,2节点,然后你关闭了这个程序,又想重新启动1节点2节点就必须删除),否则会报错,如下图所示:

只有主节点能够发送消息,其他节点会发送消息失败。如何想使用非主节点发送消息,可以去修改代码。如下图所示:将红框内的代码注释即可。

完成功能

实际上代码完成的功能很少很少,就是完成了PBFT中的节点加入功能,然后还有消息发送PBFT认证功能,以及交易数据保存的功能****。其他的就emm没有做。本人对区块链也不是特别的了解,所以有些功能感觉实现起来的代码怪怪的。

这个仓库代码大概率不会进行更新了,因为emmmmmm,考研去了。

考研结束,重新更新一波。

java中的socket算法_GitHub - xiaohuiduan/pbft: pbft算法基于Socket的java实现相关推荐

  1. java中override快捷键_【基础回溯1】面试又被 Java 基础难住了?推荐你看看这篇文章。...

    本文已经收录自 https://github.com/Snailclimb/JavaGuide  (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. ...

  2. Java中对查出的数据计数_基础算法7:从数据库某个字段中取出现次数最多的几条数据形成“热门xxx”...

    在这里,我们需要查出所有的"出发城市"和"到达城市",并对每个城市进行计数根据其出现次数来取出几个出现次数最多的城市为热门城市 注:将多个字段的数据合并在一起并 ...

  3. java中的加密与安全——常见哈希算法总结,对称式加密及不对称式加密

    目录 一.编码算法 1.URL编码 1.1.概念 1.2.代码示例(编码和解码)对URL中的中文进行编码 对URL中的中文进行解码 2.Base64编码 2.1.基本概念 2.2. 解码内容: 2.3 ...

  4. 在java中3.14156d表示_2006年9月计算机等级考试二级Java笔试真题

    一.选择题(每小题2分,共70分)下列各题A).B).C).D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分.(1)下列选项中不符合良好程序设计风格的是___ ...

  5. java中已定义类型car_Java 8 习惯用语(8):Java 知道您的类型

    Java™8 是第一个支持类型推断的 Java 版本,而且它仅对 lambda 表达式支持此功能.在 lambda 表达式中使用类型推断具有强大的作用,它将帮助您做好准备以应对未来的 Java 版本, ...

  6. java中set怎么建int型_使用Array.setInt来填充Java中的数组

    为了填充Java中的数组,我们使用Array.setInt()方法.java.lang.reflect.Array.setInt(Object array,int index,int value)方法 ...

  7. 在Java中编写实现_在运行时编写和实现新的Java类文件

    是否可以通过某种方式将新的Java类"导入"到正在运行的程序中并加以利用? 我可以让一个程序创建一个类型为'.java'的新文件,然后将其包含在项目文件中并引用它,而不必重新启动该 ...

  8. Java中函数及递归的使用(附思维导图)——java面试知识点

    引言 我相信能点到这里来的童鞋们对计算机编程中的函数肯定已经有或多或少的认知,首先我们需要知道的是:计算机编程语言中的"函数"和它隔壁领域--数学中的同名同姓的亲戚"函数 ...

  9. java中异常处理try块的说法正确的是_下面关于Java中异常处理try块的说法正确的是( )?...

    下面关于Java中异常处理try块的说法正确的是( )? 答:可能抛出异常的方法调用应放在try块中. try块后通常应有一个catch 块,用来处理try块中抛出的异常. 滴定起点pH值提高,滴定突 ...

最新文章

  1. PG奥斯卡!云数据库专属集群MyBase荣获2020 PG亚洲大会“年度最佳产品奖”
  2. 三种基本的存储引擎比较
  3. 基于SpringJDBC 实现关键功能-QueryRuleSqlBulider
  4. 都在说 AI 与云计算融合,AI 在云中的作用真有那么大吗?
  5. 使用idea导入文件夹作为项目时,在项目中的文件夹可能会被隐藏
  6. html中table边框属性
  7. java 包结构 枚举类_Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类...
  8. js操作XML文件兼容IE与FireFox
  9. 三合一交友盲盒系统微信小程序源码/免授权盲盒源码/脱单盲盒APP分销代理源码
  10. Lambda表达式实现机制的分析
  11. 大一上:英语复习:汉译英(新视野大学英语读写教程1:第一、三、四、六单元分句+注释)
  12. DNX/ASP.NET 5的xUnit入门向导
  13. 城市公交出行管理查询系统
  14. c语言间接寻址与指针,C语言中指针是不是用汇编的间接寻址实现的?
  15. 请你谈谈TCP协议与UDP协议的区别
  16. sendfile:Linux中的零拷贝
  17. linux搭建云存储,搭建nextcloud私有云存储网盘
  18. 云计算的基本特征,主要有哪些?
  19. CSS基础选择器、字体和文本样式
  20. 小白必看!数据库自学入门教程,免费的SQL认证课程

热门文章

  1. linux kernel 最新版本,linux kernel 最新版本4.10正式发布 附下载地址
  2. python PyQt5 sender(是发出信号的对象)、receiver(接收信号的对象)、slot(插槽)(是对信号做出反应的方法)
  3. yunyang1994 tensorflow_yolov3 ./checkpoint/yolo3_coco_demo.ckpt does not exist !!! Now it starts to
  4. Intel Realsense D435 开始运行启动时报错:RuntimeError: Couldn't resolve requests 原因及解决办法
  5. Longest Y 字符串,货仓选址模型(600)
  6. Distance 几何,构造(800)
  7. Make Them Equal 埃氏筛法(1200)
  8. java scoket网络编程_嵌入式狗的JAVA之路 socket 网络编程
  9. 饱和气压与温度的关系_不同温度下空气中饱和水分含量及饱和蒸汽压
  10. 将时间戳转为年月日时分秒格式