2016-01-04 45 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