Android应用程序挂在subscriber.recv()上

时间:2015-07-21 18:42:00

标签: android sockets zeromq recv jeromq

我正在编写一个接收连续数据流的Android应用程序。 我已经在runnable中建立了连接,如下所示:

Runnable runnable = new Runnable()
    {
        public void run()
        {
        ZMQ.Context context = ZMQ.context(1);
        ZMQ.Socket subscriber = context.socket(ZMQ.SUB);
        subscriber.connect("tcp://[IP]:[Port]");
            TextView strDisplay = (TextView) findViewById(R.id.stringDisplay);
            while (!Thread.currentThread ().isInterrupted ())
            {
                // Read message contents
                Log.i("Output", "the while loop ran up to here");
                //*HANGS ON THE LINE BELOW*
                String testcase = subscriber.recvStr(0);
                strDisplay.setText(testcase);
                Log.i("Output", "The while loop completed");
            }

现在,经过大量搜索,我得出两个结论:

1)recvStr()是一个阻塞调用,等待它收到某些东西。这意味着它没有正确连接或其他东西

2)我可能需要设置某种过滤器?

我无法弄清楚接下来应该做些什么。任何有JeroMQ或Android服务器访问经验的人的帮助都非常感谢

1 个答案:

答案 0 :(得分:1)

您可能需要订阅您希望从发布商处获得的主题,或者在您建立连接后订阅所有主题。

例如订阅单个主题:

subscriber.subscribe("topic_to_get".getBytes());

订阅每个主题:

subscriber.subscribe("".getBytes());