Java应用程序:连接到专用比特币节点的问题

时间:2019-02-28 12:57:05

标签: java javafx bitcoin wallet

这里是上下文,这是在主机上的eclipse上运行的Java项目。 Virtual Box已安装在此主机上,并运行一个虚拟机,该虚拟机是一个专用比特币节点。

java应用程序正尝试使用类似以下参数的参数连接到比特币节点:

  

port = 18444 ip = 。***。58   rpcuser =比特币   rpcpassword = MotDePasse   区块链=比特币chainname = regtest

如果我尝试从主机到端口184444上的比特币节点ip的telnet连接,它将正常工作。

比特币节点上的

netstat命令如下:

Proto Recv-Q Send-Q本地地址外部地址状态PID /程序名称
tcp 0 0 127.0.0.1:18443 0.0.0.0:* LISTEN 1154 / bitcoind
tcp 0 0 0.0.0.0:18444 0.0.0.0:* LISTEN 1154 / bitcoind
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN-
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN-
tcp 0576 :22 :38772已建立-
tcp6 0 0 :: 1:18443 ::: * LISTEN 1154 / bitcoind
tcp6 0 0 ::: 18444 ::: * LISTEN 1154 / bitcoind
tcp6 0 0 ::: 22 ::: *听-

控制台出现Java错误:

eb 27,2019 4:58:40 PM org.apache.http.impl.client.DefaultRequestDirector执行 INFO:重试请求 目标服务器无法响应 org.apache.http.NoHttpResponseException:目标服务器无法响应

任何想法??

谢谢

1 个答案:

答案 0 :(得分:0)

关于您在第一篇和第二篇文章中提供的信息,我将尽力为您提供一些技术信息,希望您能在此疑难解答中找到问题。

首先使用RPC协议(远程过程调用)

RPC的技术视图

此协议提供了一种机制,该机制允许客户端(例如程序)请求服务器执行由客户端发送的参数为其提供的特定过程。

RPC是一种请求-响应协议。

enter image description here

由于您要进行身份验证,因此必须知道:

对于客户端到服务器的身份验证,RPC仅定义身份验证本身,而不定义服务的访问控制。每个服务必须实现自己的访问策略。可以与RPC客户端关联的身份验证有不同的形式。

Java远程方法调用(Java RMI)是API,它为RPC协议提供了一些有用的方法和实现。

检查完整的tuto HERE

结论:

您的问题是您试图使用不提供相同实现过程的Http协议与RPC协议进行通信。由于Telnet支持使用RPC协议进行通信,因此可以得到预期的答案。

您应该在代码的两侧都实现一些类,以支持RPC通信。