0

データの連続ストリームを受信する Android アプリケーションを作成しています。次のようにランナブル内で接続を設定しました。

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");
            }

さて、インターウェブを精査した結果、2 つの結論に達しました。

1) recvStr() は、何かを受信するまで待機するブロッキング呼び出しです。つまり、正しく接続されていないか、何か他のものです

2) 何らかのフィルターを設定する必要があるかもしれません。

次に何をすればいいのかわかりません。JeroMQ または Android サーバー アクセスの経験がある方からの助けをお待ちしております。

4

1 に答える 1

1

おそらく、発行元から取得したいトピックを購読するか、接続後にすべてのトピックを購読する必要があります。

たとえば、単一のトピックをサブスクライブする場合:

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

すべてのトピックを購読する:

subscriber.subscribe("".getBytes());
于 2015-08-03T19:41:09.740 に答える