2014-02-02 2 views
2

У меня возникли проблемы с отправкой более одного запроса на мой сервер.
Я использую импульс ASIO async_client exempleBoost Asio как отправить несколько запросов

Проблема заключается в том, что я всегда получаю: Ошибка Asio.misc 2 (ВФ достиг я думаю).

Я не знаю, если хороший способ сделать это, чтобы иметь пул потоков или, если я могу использовать тот же io_service ...
Я не нахожу хорошие ответы о том, как сделать это на паутина.
Я только пытаюсь отправить другой запрос после того, как я доберусь до EOF с первого.

ответ

1

client класс в Exemple обертывания весь процесс:

процесс разрешения
  1. ПАСПОРТНУЮ
  2. Установление соединения
  3. Отправка запроса
  4. Обработка ответа

Как только вы достигли EOF, прочитав отклик, ваше соединение закрывается сервером (из-за заголовка HTTP). Поэтому вам необходимо перезапустить часть процесса. Вы должны сначала восстановить соединение с удаленным сервером, отправить запрос и прочитать ответ. Вероятно, это не полезно для повторного разрешения имен.

Если вы действительно хотите сделать простой способ, то, вероятно, сработает создание нового client.

Вам не нужен пул ниток, и вы можете, конечно, повторно использовать свой объект io_service.

+1

Также стоит отметить, в зависимости от того, как вы реализуете повторное использование: если ваш io_service когда-либо закончил работу и, следовательно, возвращает '.run', вы должны вызвать' io_service.reset() 'перед вызовом' io_service. run() 'еще раз. Это также верно для '.run_one()'. – DeVadder

+0

@DeVadder Да, вы правы. Кроме того, хороший прочтение документа всегда является хорошей идеей. – Xaqq

Смежные вопросы