无法从零MQ ZMQ_SERVER套接字中获取文件描述符
Cant Get File Descriptor From Zero MQ ZMQ_SERVER Socket
我试图将Zeromq ZMQ_SERVER套接字集成到Ubuntu上的C 中的一个epoll事件循环中。不幸的是,我无法获得Zeromq API来给我一个文件描述符。对我来说,他遵循测试方法会产生无效的参数错误:
void test_create_zmq_socket()
{
std::string address = "tcp://127.0.0.1:5558";
void* socket = zmq_socket(zmq_ctx_new(), ZMQ_SERVER);
//bind to address
int error_code = zmq_connect(socket, address.c_str());
std::cout << "INIT CLIENT SOCKET @ " << address << " STATUS: " << error_code << std::endl;
if (error_code < 0)
{
int error = zmq_errno();
std::cout << "ZMQ ERROR " << zmq_strerror(error) << std::endl;
assert(error_code >= 0);
}
size_t temp = 4;
int file_descriptor;
int error = zmq_getsockopt(socket, ZMQ_FD, &file_descriptor, &temp);
if (error < 0)
{
int errorno_val = zmq_errno();
std::cout << "ZMQ ERROR " << zmq_strerror(errorno_val) << std::endl;
assert(error >= 0);
}
std::cout << "FD VAL " << file_descriptor << std::endl;
}
上面的代码片段打印以下输出:
ExamplesREPL:
core/message_handlers/ZMQTest.cpp:36: void core::message_handlers::test_create_zmq_socket(): Assertion `error >= 0' failed.
INIT CLIENT SOCKET @ tcp://127.0.0.1:5558 STATUS: 0
ZMQ ERROR Invalid argument
Process finished with exit code 134 (interrupted by signal 6: SIGABRT)
我可以获取发送和接收消息的套接字,以使套接字不完全启用。
我正在使用ZMQ版本4.2
阅读后,我发现您无法为任何线程安全套接字检索文件描述符,而必须使用新的Zeromq Poller。该民意测验者还接受来自其他来源的文件描述符,从而使它们可以集成到事件循环中。Zeromq源代码的测试文件夹中有一个示例,该文件码说明了此功能。
相关文章:
- 如何从 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 获取本机套接字文件描述器?
- 如何在读取时获取套接字流的位置
- 使用 boost::asio 获取 UDP 套接字远程地址
- 多线程套接字编程服务器仅从 1 个客户端线程获取消息
- ssl3_read_bytes:TLSV1警报内部错误,安全套接字,OpenSSL,C ,获取HTTPS页面
- 无法从零MQ ZMQ_SERVER套接字中获取文件描述符
- 如何在FD_SET内获取套接字的IP地址
- 如何获取其他人可以使用的IP来连接到我的c 中的套接字构建
- 尝试从零mq轮询项获取套接字的实例
- 如何使用套接字编程获取系统日期和时间
- 套接字:在没有memcpy的情况下,使用recvfrom将UDP数据获取到字对齐的缓冲区
- C++ Opencv - 通过套接字获取后的图像处理
- 从套接字获取地址系列.Linux
- 如何使用套接字实现服务器客户端编程,在套接字中服务器向客户端发送消息而不从客户端获取请求
- 套接字错误 gcc 无法在 WinSock2.h 中获取函数
- .NET 如何通过套接字 C-Sharp 获取 int
- C++套接字 WEB 从特权站点获取信息
- 获取窗口上的套接字超时值
- 使用unix套接字获取本地ip地址
- 我是否正确使用GMFBridge. dll和GMFBridge播放器,GMFBridge播放器是否可以从套接字获取数据