首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jeromq中使用轮询

在jeromq中使用轮询
EN

Stack Overflow用户
提问于 2013-07-19 01:30:54
回答 1查看 1.7K关注 0票数 1

我正在学习在android中使用zeromq polling。我在android程序(客户端)中轮询一个请求套接字和一个子套接字。这样,该客户端既可以接收来自服务器的回复消息,也可以接收发布的消息。

我的投票不起作用。请求套接字和发布套接字都不会被轮询进去。如果我不使用轮询,两个套接字都会接收消息。

我试着在网上搜索,但找不到任何相关的东西。客户端代码如下:

代码语言:javascript
复制
    public void run()
   {
    ZMQ.Context context = ZMQ.context(1);
    ZMQ.Socket reqsocket = context.socket(ZMQ.REQ);
    ZMQ.Socket subsocket =context.socket(ZMQ.SUB);
    reqsocket.connect("tcp://10.186.3.174:8081");
    subsocket.connect("tcp://10.186.3.174:8083");
    subsocket.subscribe("".getBytes());
    byte[] receivedmessage;
    Poller poller=context.poller();
    poller.register(reqsocket,Poller.POLLIN);
    poller.register(subsocket,Poller.POLLIN);

    reqsocket.send(msg.getBytes(),0); 

    while(!Thread.currentThread().isInterrupted())
     {

        if(poller.pollin(0))
        {
            receivedmessage=s.recv(0);

        }
          if(poller.pollin(0))
          {
            receivedmessage=subsocket.recv(0);

          }
   }
    s.close();
    context.term();

}

我是不是遗漏了什么或者做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-19 16:00:53

这看起来有3个问题。主要的一点是,您需要调用poller.poll()作为while循环中的第一件事。这就是您没有收到任何消息的原因。

下一个问题是为两个套接字检查相同的索引:我认为第二个if语句需要

代码语言:javascript
复制
if(poller.pollin(1))

最后,请求套接字在每次接收之前都需要一个send,因此对的调用需要在while循环中,并且在上面刚刚添加的poller.poll()之前:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17730276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档