我正面臨以下問題。我想用boost Asio使用第三方庫,我需要在io_service事件循環中注入一些庫使用的套接字描述符。銷燬Boost Asio套接字而不關閉本地處理程序
我使用的方法是創建一個boost :: asio :: ip :: tcp :: socket傳遞我的庫提供的本機處理程序。
問題是,庫只是傳達它對特定的套接字通知不感興趣(這意味着庫可能會關閉套接字或稍後重新使用它)。無論如何,我想要清理boost套接字並銷燬它們,但不關閉本地處理程序(即文件描述符)。
總之,有沒有什麼辦法可以在不關閉底層處理程序的情況下銷燬boost :: asio :: ip :: tcp :: socket?我知道使用posix :: stream_descriptor,但我希望我的解決方案是可移植的。
你是否嘗試[指定](http://www.boost.org/doc/libs/1_61_0/doc/html/boost_asio/reference/basic_stream_socket/assign.html)一個愚蠢的套接字,即使它失敗了可能以前沒有更多的可用... –
@JeanDavy'socket.assign(protocol,native)'有一個先決條件,即'socket'沒有打開(參見[SocketService](http://www.boost .ORG/DOC /庫/ 1_61_0/DOC/HTML/boost_asio /參考/ SocketService.html))。如果這個前提條件不滿足,那麼'socket'的狀態保持不變。 –