Android 应用挂起 subscriber.recv()
Android Application hanging on subscriber.recv()
我正在编写一个 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");
}
现在,在对互联网进行了大量搜索之后,我得出了两个结论:
1) recvStr() 是一个阻塞调用,它会一直等待直到它收到某些东西。所以这意味着它没有正确连接或其他原因
和
2) 我可能需要设置某种过滤器?
我不知道下一步该做什么。非常感谢有 JeroMQ 或 Android 服务器访问经验的人提供的任何帮助
可能,您需要订阅您想要从发布者那里获得的主题,或者在您建立连接后订阅所有主题。
例如订阅单个主题:
subscriber.subscribe("topic_to_get".getBytes());
订阅每个主题:
subscriber.subscribe("".getBytes());
我正在编写一个 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");
}
现在,在对互联网进行了大量搜索之后,我得出了两个结论:
1) recvStr() 是一个阻塞调用,它会一直等待直到它收到某些东西。所以这意味着它没有正确连接或其他原因
和
2) 我可能需要设置某种过滤器?
我不知道下一步该做什么。非常感谢有 JeroMQ 或 Android 服务器访问经验的人提供的任何帮助
可能,您需要订阅您想要从发布者那里获得的主题,或者在您建立连接后订阅所有主题。
例如订阅单个主题:
subscriber.subscribe("topic_to_get".getBytes());
订阅每个主题:
subscriber.subscribe("".getBytes());