zmq POLLIN c++
时间: 2023-12-22 20:27:39 浏览: 183
zmq POLLIN是ZeroMQ库中的一个标志,用于指示套接字是否已准备好进行读取操作。在C++中,可以使用zmq_poll函数来检查套接字是否已准备好进行读取操作。以下是一个使用zmq_poll函数检查套接字是否已准备好进行读取操作的示例代码:
```c++
#include <zmq.hpp>
#include <iostream>
int main()
{
zmq::context_t context(1);
zmq::socket_t socket(context, ZMQ_SUB);
socket.connect("tcp://localhost:5555");
socket.setsockopt(ZMQ_SUBSCRIBE, "", 0);
zmq::pollitem_t items[] = {{socket, 0, ZMQ_POLLIN, 0}};
while (true)
{
zmq::poll(items, 1, -1);
if (items[0].revents & ZMQ_POLLIN)
{
zmq::message_t message;
socket.recv(&message);
std::string text = std::string(static_cast<char*>(message.data()), message.size());
std::cout << "Received message: " << text << std::endl;
}
}
return 0;
}
```
该示例代码使用ZMQ_SUB套接字类型创建一个套接字,并将其连接到本地主机的5555端口。然后,它使用ZMQ_SUBSCRIBE选项将套接字订阅为空字符串。接下来,它创建一个zmq_pollitem_t结构体数组,其中包含一个套接字项,该项的事件标志设置为ZMQ_POLLIN。然后,它进入一个无限循环,在循环中使用zmq_poll函数检查套接字是否已准备好进行读取操作。如果套接字已准备好进行读取操作,则使用socket.recv函数接收消息,并将其打印到控制台上。
阅读全文