Перед этим стоит следующая проблема. Я пытаюсь использовать стороннюю библиотеку с boost Asio, и мне нужно добавить некоторые дескрипторы сокетов, используемые библиотекой в цикле событий io_service.Уничтожение Boost Asio сокет без закрытия встроенного обработчика
Подход, который я использую, создает boost :: asio :: ip :: tcp :: socket, передавая собственный обработчик, предоставляемый моей библиотекой.
Проблема в том, что библиотека просто сообщила, что ее не интересуют конкретные уведомления сокетов (это означает, что библиотека может закрыть сокет или повторно использовать его в более поздней точке). В любом случае, я хотел бы сделать очистку от сокетов повышения и уничтожить их, но не закрывая нативный обработчик (то есть дескриптор файла).
Короче говоря, есть ли способ уничтожить 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/LIBS/1_61_0/DOC/HTML/boost_asio/ссылка/SocketService.html)). Если это условие не выполняется, состояние 'socket' остается неизменным. –