2016-01-04 44 views
0

我试图用Java的ZMQ库连接到比特币节点。问题是,当我尝试收到响应时,代码仍然冻结。什么都不返回用于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);。我正在使用描述为here的调用来完成整个节点的实现。提前致谢!

回答

0

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

我建议你把上面的代码放在一个线程/ runnable类中,并使用localhost作为TEST_URL并启动服务器。

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

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