Asio автономный async_connect не вызывает обратного вызова после подключения - PullRequest
0 голосов
/ 27 марта 2020

У меня проблема в том, что asio :: async_connect не вызывает обработчик обратного вызова (в данном случае foo), даже если соединение уже установлено на стороне сервера. Это очень сбивает с толку, так как async_read / write работает, как и ожидалось.

Вот упрощенный пример

void foo(const asio::error_code& ec)
{
    std::cout << "Foo called" << std::endl;
}

int main()
{
    asio::io_service io;
    asio::io_service::work work(io);

    asio::ip::tcp::socket socket(io);
    asio::ip::tcp::endpoint ep(asio::ip::address::from_string("127.0.0.1"), 5454);
    socket.async_connect(ep, std::bind(&foo, std::placeholders::_1));

    io.run();
    return 0;
}

1 Ответ

1 голос
/ 27 марта 2020

Проблема заключалась в том, что у меня было два разных объекта io_service с одним и тем же именем, и он вызывал io.run () для неправильного. Фрагмент кода действительно работал, когда я тестировал его в отдельном случае.

...