Ваш 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));
}
Хотя, как подсказывают ваши комментарии, вам действительно следует опубликовать самостоятельный пример проблемы. Приведенное выше предложение является моим лучшим предположением.