类似 这种 ZMQ_DONTWAIT 还有其他的宏吗
31浏览 · 2024-03-28 09:39:20
是的,ZeroMQ 还提供了以下几个类似的 socket 选项宏:
- ZMQ_SNDMORE:用于[消息](https://geek.csdn.net/educolumn/20acd77092e0c464c067a69674f1ed19?spm=1055.2569.3001.10083)分块发送。当设置了 ZMQ_SNDMORE 选项后,下一部分[消息](https://geek.csdn.net/educolumn/20acd77092e0c464c067a69674f1ed19?spm=1055.2569.3001.10083)将与当前[消息](https://geek.csdn.net/educolumn/20acd77092e0c464c067a69674f1ed19?spm=1055.2569.3001.10083)组成一个消息序列一起发送。
- ZMQ_NOBLOCK:与 ZMQ_DONTWAIT 类似,用于设置套接字在非阻塞模式下发送或接收消息。
- ZMQ_RCVMORE:用于检查接收到的消息是否分块。当 ZMQ_RCVMORE 选项为 true 时,表示当前接收到的消息仅是序列中的一部分,后面还有其他消息。
- ZMQ_IMMEDIATE:用于控制是否立即断开连接。当设置了 ZMQ_IMMEDIATE 选项后,如果套接字上有未发送完的消息,调用 zmq_close() [函数](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)时将立即断开连接并返回 EAGAIN 错误。
需要注意的是,这里提到的几个选项宏并不是全部的 socket 选项,更多的选项可以参考 ZeroMQ 的官方[文档](https://geek.csdn.net/edu/300981ef51993cfd737d329c71ba77f9?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)。
相关问题
zmq_poll是ZeroMQ库中的一个函数,用于在多个套接字上进行异步I/O操作的轮询。它可以用于同时监视多个套接字上的事件,并在事件发生时进行相应的处理。zmq_poll函数的作用是等待指定的套接字上发生事件,并返回发生事件的套接字的数量。
以下是一个使用zmq_poll函数的示例:
```c++
#include <zmq.h>
#include <stdio.h>
int main() {
void *context = zmq_ctx_new();
void *socket1 = zmq_socket(context, ZMQ_SUB);
```