我遇到了以下问题。我想要在使用boost Asio的第三方库中注入一些socket描述符到io_service事件循环中。
我的做法是创建一个boost::asio::ip::tcp::socket并传递本地处理程序提供的原生处理程序。
问题在于,该库只会通信,不关心特定socket通知(这意味着该库可能会在稍后关闭或重用该socket)。无论如何,我都想清理boost套接字并销毁它们,但不关闭原生处理程序(即文件描述符)。
简而言之,有没有办法在不关闭底层处理程序的情况下销毁boost::asio::ip::tcp::socket?我知道可以使用posix::stream_descriptor,但我希望我的解决方案具有可移植性。
我的做法是创建一个boost::asio::ip::tcp::socket并传递本地处理程序提供的原生处理程序。
问题在于,该库只会通信,不关心特定socket通知(这意味着该库可能会在稍后关闭或重用该socket)。无论如何,我都想清理boost套接字并销毁它们,但不关闭原生处理程序(即文件描述符)。
简而言之,有没有办法在不关闭底层处理程序的情况下销毁boost::asio::ip::tcp::socket?我知道可以使用posix::stream_descriptor,但我希望我的解决方案具有可移植性。
socket.assign(protocol, native)
有一个前提条件,即socket
没有打开(请参见 SocketService)。如果未满足此前提条件,则socket
的状态将保持不变。 - Tanner Sansbury