【问题标题】:how to set send/receive timeout on czmq?如何在 czmq 上设置发送/接收超时?
【发布时间】:2019-11-27 19:30:52
【问题描述】:

我想知道如何在 czmq 库中设置 zstr_send()zstr_recv() 的超时时间。

我知道这可以在libzmq 中使用zmq_setsockopt (requester, ZMQ_RCVTIMEO, &timeout, sizeof(timeout)) 来完成,但在czmq 中则不行

libczmq 的语法是什么?!

【问题讨论】:

    标签: c zeromq


    【解决方案1】:

    是的!找到它...

    zsock_set_rcvtimeo()zsock_set_sndtimeo() 是设置超时的答案。

    czmq 的 API 没有好的文档! :|

    zsock_option() 中有很多没有文档的 API。

    【讨论】:

      【解决方案2】:

      您可以使用选择:

      int64_t start; 
      struct timeval tv;
      fd_set fds;
      int fd,rc;
      tv.tv_sec = 1; // timeout in seconds
      tv.tv_usec = 0;
      FD_ZERO(&fds);
      FD_SET(fd, &fds);
      
      start = zclock_time ();
      zstr_send (client, "hello");
      rc = select(fd + 1, &fds, (fd_set *)0, (fd_set *)0, &tv);
      if (rc == 0) {
      // timeoout expired 
      }
      if (rc == -1) {
      // erreur select 
      }
      // message recieved  before timeout
      printf (" message recieved s/second\n",  (1000 * 10000) / (int) (zclock_time () - start));
      

      【讨论】:

      • 我不想使用其他 api;即我不想通过其他解决方案分歧;我只想要一个简单的解决方案! select() 不是那个,而且很乱
      猜你喜欢
      • 2021-11-22
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 2012-04-20
      • 2015-04-26
      • 1970-01-01
      • 2017-04-17
      • 2015-07-13
      相关资源
      最近更新 更多