2013-04-15 4 views
2

Я работаю над проектом, в котором у меня есть веб-сервер. Я должен добавить возможность, чтобы для каждого запроса мне нужно было отправить несколько запросов на другие серверы, получить ответы и отправить результаты первоначальному клиенту. Эти серверы имеют высокую пропускную способность, поэтому я беспокоился о количестве сокетов, а также о скорости создания новых потоков/сокетов для отправки многих запросов по многим сокетам. Поэтому я начал думать, что одна или несколько подключений, открытая каждому клиенту, поможет решить эту проблему. Я не был уверен, что устойчивые соединения и ускорение работы ASIO. Некоторые вопросы, которые у меня были:Повторное использование соединения Asio

-Как можно установить время жизни с помощью сокетов ASIO tcp.

-Можно ли отправлять несколько одновременных запросов по одному и тому же сокету? Если бы я столкнулся с проблемой с порядком результатов (каждый результат должен иметь идентификатор, поэтому я не имею в виду порядок, так как при отправке результатов из строя, но больше порядка пакетов, если ответ более одного пакета, у меня будет проблема с порядком пакетов).

Все запросы - это запросы HTTP GET/POST, если это имеет значение.

Любая информация по этому вопросу будет оценена по достоинству. Благодарю.

ответ

2

Сокет TCP действует как поток данных, данные, которые вы пишете на одном конце, будут приниматься в том же порядке на другом конце. Вы можете отправлять несколько запросов по одному и тому же сокету, если ваш протокол может его обработать.

Вы указываете параллельные запросы, поэтому вам нужно быть очень осторожными, чтобы не чередовать вызовы записи двух разных запросов. Если вы можете гарантировать, что каждый результат записывается атомарно, то я не вижу проблем с использованием сокета для нескольких запросов (вы можете сделать это с помощью очереди ответов).

Вы можете установить стандартный разъем в режиме ожидания here.

+0

Спасибо, это имеет смысл, я планировал использовать систему очередей для вызовов для записи, поэтому я считаю, что это должно хорошо работать для меня. – Eumcoz

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