C++提升async_accept异常"already open"
C++ boost async_accept exception "already open"
我遇到了一个小问题,我看不到很多人都遇到了提升async_accept。
这就是我处理async_accept的方式以及我如何称呼它。
void Server::accept()
{
try {
Connection* connection = new Connection(io_service);
connections.push_back(connection);
acceptor->async_accept(connection->getSocket(), std::bind(&Server::onAccept, this, std::placeholders::_1, connection));
}
catch (const boost::system::system_error& e) {
std::cout << "> [Error - Server::start]: " << e.what() << std::endl;
}
}
void Server::onAccept(const boost::system::error_code& e, Connection* connection)
{
if (e) {
std::cout << "> [Error - Server::onAccept]: " << e.message() << std::endl;
connection->disconnect();
return;
}
connection->read();
accept();
}
方法connection->getSocket(( 返回对连接类中的 boost::asio::ip::tcp::socket socket socket 变量的引用。连接被接受,但是当调用onAccept时,出现"已打开"错误,我似乎找不到解决方案。
问题不在于显示的代码。
Google显示许多人都有相同的问题,并且前3次点击之一显示它是由正在使用客户端连接类的事实引起的,而这是一个服务器。
客户端连接启动连接,因此,如果您复制/粘贴该代码,您将有一个打开的连接,这当然是"已经打开"。
检查是否未在 Connection
类中打开套接字。 或者,检查是否在new Connection
中实例化了正确的类型(名称和命名空间(。
相关文章:
- 使用"std::enable_if_t" "function template has already been defined"
- Poco::Net::FTPClientSession 在 open() 方法上挂起 129 秒,如果 ftp 主机不存
- 如果两个静态库使用相同的另一个静态库,如何避免"LNK2005 Already Defined error"?
- Node.js fs.open() 在尝试打开 4 个以上的命名管道 (FIFO) 后挂起
- 使用 gtest 时"_main already defined"
- POSIX open() 挂在 SMB 共享上
- C++:std::ofstream 方法 open() 在第二次迭代时擦除打开的 ifstream 文件
- Visual Studio "fatal error LNK1104: cannot open file"未使用或包含的库
- C++ 错误检查 fstream open() 命令和一般字符串流错误处理
- VS 2017 C++ - "cannot open source file 'sqlite3.h' "
- 在VS 15.7.5中,悬停在Open CV 3.4.1Mat上仍然冻结
- 计算着色器Open GL ES的多个输入
- 从生成文件编译错误:"Unable to open output file" ..."No such file or directory"
- Open GL ES 3.1 的计算着色器的最小工作示例
- "... already defined in *.obj"但我没有在同一范围内两次定义任何变量
- 我可以对"int 文件 = open(path, flag);"做点什么吗?
- 进口。TLB文件给出"cannot open source file x.tlh"
- QtCreator 中的"Fatal Error C1083: Cannot open include file"
- C++提升async_accept异常"already open"
- 在 Asio 中建立新连接时出现"Already Open"错误