【问题标题】:Java application : problem to connect to a private bitcoin nodeJava应用程序:连接到私人比特币节点的问题
【发布时间】:2019-02-28 12:57:05
【问题描述】:

这里是上下文,一个在我的主机上运行在 eclipse 上的 java 项目。 Virtual Box 安装在这台主机上并运行一个虚拟机,它是一个私有比特币节点。

Java 应用程序正在尝试使用以下参数连接到比特币节点:

port=18444 ip=..***.58 rpcuser=比特币rpc rpcpassword=MotDePasse 区块链=比特币链名=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:* 听 -
tcp 0 576 ...:22 ...:38772 已建立 -
tcp6 0 0 ::1:18443 :::* LISTEN 1154/bitcoind
tcp6 0 0 :::18444 :::* LISTEN 1154/bitcoind
tcp6 0 0 :::22 :::* 听 -

来自控制台的 Java 错误:

2019 年 2 月 27 日下午 4:58:40 org.apache.http.impl.client.DefaultRequestDirector 执行 信息:重试请求 目标服务器未能响应 org.apache.http.NoHttpResponseException: 目标服务器响应失败

有什么想法吗??

谢谢

【问题讨论】:

    标签: java javafx bitcoin wallet


    【解决方案1】:

    关于您在第 1 篇和第 2 篇文章中提供的信息,我会尽力为您提供一些技术信息,希望您能找到解决此问题的问题。

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

    RPC 技术观点

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

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

    既然你在尝试认证,你必须知道:

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

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

    查看完整教程HERE

    总结:

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

    你应该在你的代码中实现一些类来支持 RPC 通信。

    【讨论】:

    • 嗨,上次更新,我现在收到以下错误:“JSONRPC 服务器只处理 POST 请求”
    • 使用wireshark或代理查看你发送的请求类型。并仔细检查另一边是否期望如此。提供更多信息以获得更多帮助。
    猜你喜欢
    • 2018-03-26
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2017-08-25
    相关资源
    最近更新 更多