Как запустить «событие», когда мой tcp-сервер Boost :: asio только начинает работать (AKA io_service.run ())?

Основываясь на отношениях клиент / сервер boost :: asio, я должен запускать клиентскую программу из серверной программы только тогда, когда поток сервера находится в "жду соединения государство.



Мой вопрос: как получить знания об этом состоянии?

В качестве образца используйтепример asio / сериализация ссылка на сайти замените основную функцию server.cpp следующим кодом:

#include 
#include  // wait function
#include 
#include 

void server_thread( std::promise& run )
{ 
    boost::asio::io_service io_service;
    s11n_example::server server(io_service, 123);
    // too early to run.set_value( true );
    io_service.run();
    // too late to run.set_value( true );
}

int main(int argc, char* argv[])
{
    std::promise run;
    std::thread thrd( server_thread, boost::ref( run ) );
    thrd.detach(); 

    bool launched = run.get_future().get();
    // server is waiting for connection
    // launch the client
    if( launched )
    {
        int rc = system( "start client.exe localhost 123" );
        if( rc )
            std::cerr < "system failed returning " < rc < std::endl ;
    }
    else
        std::cerr < "server_thread failure" < std::endl ;

    std::cout < "hit a key to exit"  ;
    while( !_kbhit() )
        Concurrency::wait( 100 );

    return 0;
}

Ответы на вопрос(1)

Ваш ответ на вопрос