如何在 czmq 上设置 send/receive 超时?

how to set send/receive timeout on czmq?

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

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

中不行

libczmq 的语法是什么?!

您可以使用 select :

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

是的!找到它...

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

czmq 没有好的 API 文档! :|

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