我正在使用 boost::asio,版本 boost 是 1.71。最初我有 ip::tcp::socket 对象,将其命名为“socket”。我需要获取此套接字使用的 io_context。
在早期的 boost 版本(例如 1.62)中,这很简单。有 asio::basic_socket::get_io_service() 方法。但是我如何在 boost 1.71 中做到这一点?
这种必要性出现是因为我有一个大量使用 boost1.62 和“asio::basic_socket::get_io_service()”的项目。
我试过了:
// ????? socket
asio::executor e = socket.get_executor();
asio::execution_context &e_context = e.context();
asio::io_context &context_instance = static_cast<asio::io_context&>(e_context);
Run Code Online (Sandbox Code Playgroud)
但它看起来危险且不正确。虽然它构建和运行成功。