【发布时间】:2016-08-11 21:54:36
【问题描述】:
我面临以下问题。我正在尝试使用带有 boost Asio 的第三方库,并且我需要在 io_service 事件循环中注入该库使用的一些套接字描述符。
我使用的方法是创建一个 boost::asio::ip::tcp::socket 传递我的库提供的本机处理程序。
问题是库只会传达它对特定套接字通知不感兴趣(这意味着库可能会关闭套接字或稍后重用它)。无论如何,我想清理 boost 套接字并销毁它们,但不关闭本机处理程序(即文件描述符)。
简而言之,有没有办法在不关闭底层处理程序的情况下销毁 boost::asio::ip::tcp::socket?我知道改用 posix::stream_descriptor,但我希望我的解决方案是可移植的。
【问题讨论】:
-
你有没有试过assign一个哑套接字,即使失败也可能以前的将不再可用...
-
@JeanDavy
socket.assign(protocol, native)具有socket未打开的前提条件(请参阅SocketService)。如果不满足此前提条件,则socket的状态保持不变。
标签: c++ sockets tcp boost-asio