0MQ,Boost.Asio和Windows

时间:2013-08-09 17:10:15

标签: windows boost-asio zeromq

我一直在关注在Using ZeroMQ together with Boost::ASIO的POSIX-ish平台(MacOS)上使用0MQ和Boost.Asio的优秀建议。不幸的是,我正在编写需要在POSIX-ish和Windows上运行的代码。到目前为止,我没有太多运气,试图将这个建议转化为Windows方面。我似乎无法弄清楚如何匹配Windows上getsockopt(ZMQ_FD)返回的类型以及我认为应该是Windows等效的boost :: asio :: posix :: stream_descriptor。这是我尝试过的:

zmq::context_t zenv(1);
zmq::socket_t zocket(zenv, ZMQ_PUSH);
SOCKET zfd;
std::size_t zfd_size = sizeof(zfd);
zocket.getsockopt(ZMQ_FD, &zfd, &zfd_size);
boost::asio::io_service ios;
boost::asio::windows::stream_handle io(ios, zfd);

我尝试编译时遇到的错误。

2>Z:\zee-zmq-socket.cpp(14): error C2664: 'boost::asio::windows::basic_stream_handle<>::basic_stream_handle(boost::asio::io_service &,void *const &)' : cannot convert parameter 2 from 'SOCKET' to 'void *const &'
2>          Reason: cannot convert from 'SOCKET' to 'void *const '
2>          Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

到目前为止,我的谷歌一直很弱;我似乎只能在POSIX-ish上找到处理Boost.Asio和0MQ的例子。我不确定我需要做什么才能正确地从SOCKET到void * const。我能找到的最接近的建议是将0MQ和libcurl结合起来:http://comments.gmane.org/gmane.comp.lib.boost.asio.user/5071。而这个建议也让我感到紧张,因为我的编译问题只是隐藏在表面之下的一个更糟糕的冰山一角。特别是,

  

为什么有分配但没有释放功能的原因   boost :: asio :: ip :: tcp :: sockets是套接字“绑定”到完成时的情况   端口你不能“解绑”它或“绑定”到另一个完成端口。

所以我担心可能还有其他的问题,我可能不知道哪些甚至不会如此礼貌地表现为编译时错误。提前感谢您的帮助。

0 个答案:

没有答案