0
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();
}
}
當我運行該項目,我獲得以下錯誤:升壓async_accept導致「訪問衝突」 - 錯誤
Access violation reading location 0xfeeeff02.
什麼是這個錯誤的原因是什麼?
請將您的代碼降低到引發問題所需的最低*值。 – 2011-05-24 23:39:31
@Oli Charlesworth我做到了這一點 – Abanoub 2011-05-25 01:57:05
不是真的 - 我不能把你發佈的代碼編譯並測試/調試它,因爲它沒有完成。發佈重現您所看到的行爲所需的*完整,最小*代碼。 – ildjarn 2011-05-25 02:19:39