我想知道如何在czmq库的zstr_send()和zstr_recv()上设置超时。
我知道这可以用libzmq中的zmq_setsockopt (requester, ZMQ_RCVTIMEO, &timeout, sizeof(timeout))完成,但不能在czmq中完成
libczmq的语法是什么?!
发布于 2019-11-27 19:30:52
是啊!找到它。
zsock_set_rcvtimeo()和zsock_set_sndtimeo()是设置超时的答案。
czmq没有好的文档,因为它的API好!:|
zsock_option()中有很多没有文档的API。
发布于 2019-11-27 16:38:12
您可以使用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));https://stackoverflow.com/questions/59065431
复制相似问题