Я пытался узнать, есть ли у кого-нибудь еще эта проблема, но я еще ничего не нашел в сети. Что-нибудь в этом коде выглядит так, будто я вызываю boost неправильно?Boost Asio Error
Этот код работает, когда я вошел в систему, на которой запущен TCP-сервер, но терпит неудачу, когда никто не вошел в систему. Я удалил код, чтобы посмотреть только на логику повышения asio.
//create _acceptor, which will eventually listen for incomming connections, asynchronously
_acceptor = boost::shared_ptr<tcp::acceptor>(new tcp::acceptor(*_io_service));
_acceptor->open(tcp::endpoint(tcp::v4(), _port).protocol());
_acceptor->set_option(tcp::acceptor::reuse_address(false));
//omitted logic find a port that is open
_acceptor->bind(tcp::endpoint(tcp::v4(), _port));
//omitted error handling logic if open port not found
//Start listening for incoming connections asynchronously.
_acceptor->listen();
sslSocketPtr ssl_socket(sslSocketPtr(new ssl::stream<ip::tcp::socket>(*_io_service, _sslContext)));
_acceptor->async_accept(ssl_socket->lowest_layer(),
boost::bind(&TCPServer::handle_sslAccept, shared_from_this(), boost::asio::placeholders::error, ssl_socket));
Когда никто не вошел в машину, конструктор ssl_socket бросает исключение: «static_mutex: отказано в доступе».
Если я определяю BOOST_ASIO_ENABLE_OLD_SSL, код работает правильно, но я думаю, что это может повлиять на другую ошибку в моем коде. Поэтому я пытаюсь использовать последнюю логику SSL от Boost.
Любая помощь будет оценена!
«когда никто не вошел в машину» вы начинаете процесс по-другому? Кроме того, на какой платформе вы запускаете это (я не могу поверить, что вы не упомянули об этом существенном бите информации в сообщении ...) – sehe
Извините за то, что вы не включили сценарий и среду. Это выполняется в Windows 7. Процесс запускается с удаленного компьютера, подключенного к демону, который запускает другую программу в качестве удаленного пользователя (с их учетными данными). Эта финальная программа - это проблема с TCP-сервером. – Snowman6286