gpt4 book ai didi

c++ - Boost async_accept 导致 'access violation' - 错误

转载 作者:行者123 更新时间:2023-11-28 01:05:58 24 4
gpt4 key购买 nike

Server::Server(boost::asio::io_service& io_service,std::string ip,short port,std::shared_ptr<ConnectionFactory> factory)
: acceptor_(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::address_v4::from_string(ip.data()), port)){

m_factory = factory;
start_accept();

std::cout<<"Socket accepting connections..."<<std::endl;
}

void Server::start_accept(){
boost::asio::io_service io_service;
std::shared_ptr<Connection> conn = m_factory->create(io_service);

acceptor_.async_accept(conn->socket(),
boost::bind(&Server::handle_accept, this,conn,
boost::asio::placeholders::error));

}


void Server::handle_accept(std::shared_ptr<Connection> conn,const boost::system::error_code& error){

if (!error)
{
std::cout<<"on connected"<<std::endl;
conn->OnConnected();
start_accept();
}
}

当我运行项目时,出现以下错误:

访问冲突读取位置 0xfeeeff02。

这个错误的原因是什么?

最佳答案

您的 io_service 超出了 start_accept() 的范围,这不好,可能不是您想要的。

改变这个

Server::Server( ... ) {
m_factory = factory;
start_accept();

std::cout<<"Socket accepting connections..."<<std::endl;
}

void Server::start_accept() {
boost::asio::io_service io_service;
^^^^^^^^^
std::shared_ptr<Connection> conn = m_factory->create(io_service);

acceptor_.async_accept(conn->socket(),
boost::bind(&Server::handle_accept, this,conn,
boost::asio::placeholders::error));

}

对此

Server::Server( ... ) {   
m_factory = factory;
start_accept( io_service );
^^^^^^^^^

std::cout<<"Socket accepting connections..."<<std::endl;
}

void Server::start_accept( const boost::asio::io_service& io_service ){
std::shared_ptr<Connection> conn = m_factory->create(io_service);

acceptor_.async_accept(conn->socket(),
boost::bind(&Server::handle_accept, this,conn,
boost::asio::placeholders::error));

}

不过,正如您的评论所建议的那样,您确实应该发布一个独立的问题示例。以上建议是我最好的猜测。

关于c++ - Boost async_accept 导致 'access violation' - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6118083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com