-1

我正在尝试使用 Java 的 ZMQ 库连接到比特币节点。问题是当我尝试接收响应时,代码仍然冻结。什么都不返回。

这是我的代码:

public class CBETest {

    private static final String TEST_URL = "obelisk.airbitz.co";

    public static void main(String[] args) {

       System.out.println("\t--- ZMQ ---");
       Ctx c = zmq.ZMQ.createContext();
       SocketBase s = c.createSocket(zmq.ZMQ.ZMQ_DEALER);

       zmq.ZMQ.connect(s, "tcp://"+TEST_URL+":9091");
       System.out.println("Connected!");
       int sent = zmq.ZMQ.send(s, "blockchain.fetch_last_height", 0);

       System.out.println("Sent: " + sent);
       Msg msg = zmq.ZMQ.recv(s, 0);
       System.out.println("Response " + Arrays.toString(msg.data()));
    }
}

代码冻结在行中Msg msg = zmq.ZMQ.recv(s, 0);。我正在使用此处描述的调用来实现完整节点。提前致谢!

4

1 回答 1

0

代码没有冻结,它在等待接收消息时被阻塞。

我建议您将上述代码放在线程/可运行类中,并使用 localhost 作为 TEST_URL 并启动服务器。

然后创建另一个带有客户端的 Runnable 类,该客户端尝试连接到该端口并发送回消息并启动该线程并查看消息是否通过。

这里有一个例子:http://zguide.zeromq.org/java: rtdealer

于 2016-01-04T10:36:50.063 回答