zmq recv message 用法
时间: 2023-08-21 21:36:03 浏览: 76
在使用 ZeroMQ 进行消息传递时,收到消息需要使用 `zmq_recv` 函数。该函数的使用方法如下:
```c
int zmq_recv (void *socket, void *buf, size_t len, int flags);
```
其中,参数的含义为:
- `socket`:`void*` 类型,指向要接收消息的 ZeroMQ 套接字。
- `buf`:`void*` 类型,指向存储接收消息的缓冲区。
- `len`:`size_t` 类型,指定接收消息缓冲区的大小。
- `flags`:`int` 类型,指定接收消息的标志,如 `0` 表示阻塞接收。
函数返回值为接收到的消息的字节数。如果接收失败,则返回 `-1`。
示例代码如下:
```c
void *context = zmq_ctx_new ();
void *socket = zmq_socket (context, ZMQ_SUB);
//连接到发布者
zmq_connect (socket, "tcp://localhost:5555");
//订阅所有消息主题
zmq_setsockopt (socket, ZMQ_SUBSCRIBE, "", 0);
//接收消息
char buffer [256];
int size = zmq_recv (socket, buffer, 256, 0);
//打印接收到的消息
printf ("Received: %s\n", buffer);
zmq_close (socket);
zmq_ctx_destroy (context);
```
在该示例中,我们首先创建了一个 ZeroMQ 套接字,并将其连接到一个发布者。然后我们订阅了所有消息主题,并使用 `zmq_recv` 函数接收消息,将接收到的消息存储在 `buffer` 缓冲区中,并打印出来。最后,我们关闭套接字并销毁 ZeroMQ 上下文。
阅读全文