这里是上下文,这是在主机上的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:目标服务器无法响应
任何想法??
谢谢
答案 0 :(得分:0)
关于您在第一篇和第二篇文章中提供的信息,我将尽力为您提供一些技术信息,希望您能在此疑难解答中找到问题。
首先使用RPC协议(远程过程调用)
RPC的技术视图
此协议提供了一种机制,该机制允许客户端(例如程序)请求服务器执行由客户端发送的参数为其提供的特定过程。
RPC是一种请求-响应协议。
由于您要进行身份验证,因此必须知道:
对于客户端到服务器的身份验证,RPC仅定义身份验证本身,而不定义服务的访问控制。每个服务必须实现自己的访问策略。可以与RPC客户端关联的身份验证有不同的形式。
Java远程方法调用(Java RMI)是API,它为RPC协议提供了一些有用的方法和实现。
检查完整的tuto HERE
结论:
您的问题是您试图使用不提供相同实现过程的Http协议与RPC协议进行通信。由于Telnet支持使用RPC协议进行通信,因此可以得到预期的答案。
您应该在代码的两侧都实现一些类,以支持RPC通信。