提升 Asio 错误
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代码可以正常工作,但我认为这可能会导致我的代码中的另一个错误。所以我正在尝试使用来自 Boost 的最新 SSL 逻辑。
任何帮助将不胜感激!
我将从您在Windows上运行的症状中假设。
在Windows上,static_mutex被实现为命名(进程间)互斥锁,并使用CreateMutexW
"打开":
如果互斥锁是命名互斥锁,并且对象在此函数调用之前存在,则返回值是现有对象的句柄,GetLastError 返回
ERROR_ALREADY_EXISTS
,bInitialOwner
将被忽略,并且调用线程不会被授予所有权。但是,如果调用方的访问权限有限,则该函数将失败并ERROR_ACCESS_DENIED
,调用方应使用OpenMutex
函数。
如您所见,您没有所需的权限。但是,如果互斥锁始终由特权进程创建,则仍然可以使其工作。在这种情况下,您可以修改打开现有命名互斥锁的代码,OpenMutex
如文档提示所示。
在具有所需权限的用户下运行该过程可能更容易
相关文章:
- 瓦尔格林德错误来自 boost::asio
- 在网络套接字计时器滴答后增加asio短读错误
- 错误: C1083: 无法打开包含文件:"boost/asio.hpp": 没有此类文件或目录
- 使用 Boost ASIO 和 SSL 时出现"Wrong Version Number"错误 (C++)
- 尝试关闭 SSL 套接字时使用升压 asio 1.64 的分段错误 (SIGSEGV)
- 提升 asio 回声服务器示例中的黑客或错误?
- C++ Boost::asio x64 async_send失败,出现错误 10014 (WSAEFAULT)
- boost::asio async_accept总是发生错误,error_code.value() 是 22,这意味着参
- 编译Boost ASIO示例时出现错误
- 加速 ASIO 系统错误 995:I/O 操作已中止
- 尝试重新连接到服务器时获取错误提升 asio 连接超时
- 提升 ASIO 绑定:错误的文件描述符
- boost :: Asio连接错误的界面
- 在thread.hpp上boost asio udp 螺纹= get_id()错误
- 将 Boost Asio 与 ZeroMQ 集成,文件描述符错误?
- 在CLion中链接Boost.Asio时Static_initialization_and_distruction错误
- 为什么这C++ASIO,当执行HTTP / SSL请求时,BEAST服务器会进入错误状态
- 编译器错误boost :: asio ::占位符:: boost v1.69的错误
- boost asio错误类别为空
- Boost Asio udp 解析器返回错误的端点迭代器