这是上下文,一个在我的主机上运行在eclipse上的java项目。 Virtual Box安装在此主机上并运行vm,这是一个私有比特币节点。
java appli尝试使用以下参数连接到比特币节点:
port = 18444 ip = .. ***。58 rpcuser = bitcoinrpc rpcpassword = MotDePasse blockchain = bitcoin chainname = regtest
如果我尝试telnet连接从我的主机到端口184444上的比特币节点ip,它的工作原理。
比特币节点上的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:*听到 - tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - tcp 0 576 ...:22 ...:38772 ESTABLISHED - tcp6 0 0 :: 1:18443 ::: * LISTEN 1154 / bitcoind tcp6 0 0 ::: 18444 ::: * LISTEN 1154 / bitcoind tcp6 0 0 ::: 22 ::: * LISTEN -
控制台的Java错误:
eb 27,2019 4:58:40 PM org.apache.http.impl.client.DefaultRequestDirector执行INFO:重试请求目标服务器无法响应org.apache.http.NoHttpResponseException:目标服务器无法响应
任何的想法 ??
谢谢
关于您在第1和第2篇文章中提供的信息,我将尝试为您提供一些我希望的技术信息,您将能够找到此故障排除的问题。
首先使用RPC协议(远程过程调用)
RPC的技术观点
该协议提供允许客户端(例如,程序)请求服务器执行由客户端发送的参数提供给它的特定过程的机制。
RPC是一种请求 - 响应协议。
由于您要进行身份验证,因此您必须知道:
对于客户端到服务器身份验证,RPC仅定义身份验证,而不是服务的访问控制。每个服务都必须实现自己的访问策略。可以与RPC客户端关联的是不同形式的身份验证。
Java远程方法调用(Java RMI)是为RPC协议提供一些有用的方法和实现的API。
检查一个完整的tuto HERE
结论:
您的问题是您尝试使用Http协议与RPC协议进行通信,该协议不提供相同的实现过程。由于Telnet支持与RPC协议的通信,因此您可以获得预期的答案。
您应该在代码中实现一些类以支持RPC通信。