Взлом или ошибка в примере с сервером asio echo - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь понять пример эхо-сервера от boost asio. И я не могу понять , как можно много раз перемещаться с одного и того же объекта . Извините, если я просто пропущу простую вещь.

Это метод, который вызывается при запуске. socket_ является членом класса. И, как я вижу, он перемещается каждый раз, когда устанавливается новое соединение. Пожалуйста, посмотрите на пример , чтобы понять всю картину.

void do_accept()
{
  acceptor_.async_accept(socket_,
      [this](boost::system::error_code ec)
      {
        if (!ec)
        {
          std::make_shared<session>(std::move(socket_))->start();
        }

        do_accept();
      });
}

1 Ответ

0 голосов
/ 01 мая 2018

Спасибо Андреасу, я посмотрел конструктор перемещения сокета asio Я должен был сделать это раньше. И ответ прост:

После перемещения перемещенный объект находится в том же состоянии, как если бы построен с использованием конструктора @c basic_stream_socket (io_service &).

...