Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2019, 07:13   #21
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну так откройте доку и посмотрите. Буст ничего не скрывает.
p51x вне форума Ответить с цитированием
Старый 09.08.2019, 22:46   #22
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 121
Печаль

Вот тут https://www.boost.org/doc/libs/1_37_...overload1.html
написано, что:
Код:
void async_resolve(
    const query & q,
    ResolveHandler handler);

void handler(
  const boost::system::error_code& error, // Result of operation.
  resolver::iterator iterator             // Forward-only iterator that can
                                          // be used to traverse the list
                                          // of endpoint entries.
);
Делаю вот так тогда:

Код:
string URL_name = "www.games.ru";

boost::asio::io_service io_services;

tcp::resolver resolvers(io_services);
tcp::socket socks(io_services);
boost::system::error_code ec;

tcp::resolver::query query(URL_name, "80");
tcp::resolver::iterator iter = resolver_.async_resolve(query, const boost::system::error_code& ec, tcp::resolver::iterator endpoint_iterator);
Но опять, я че то не понимаю, так тоже не правильно.
Android1 вне форума Ответить с цитированием
Старый 09.08.2019, 22:58   #23
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Опять по кругу? Вы же сами определение привели...

Код:
tcp::resolver::iterator iter = resolver_.async_resolve(query, const boost::system::error_code& ec, tcp::resolver::iterator endpoint_iterator);
Код:
void async_resolve(
    const query & q,
    ResolveHandler handler);
Функция возвращает void, а не tcp::resolver::iterator. Функция принимает ДВА параметра, а не ТРИ и один из них функция.
p51x вне форума Ответить с цитированием
Старый 10.08.2019, 20:23   #24
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 121
По умолчанию

Что то получилось! Спасибо !
Android1 вне форума Ответить с цитированием
Старый 11.08.2019, 22:33   #25
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 121
По умолчанию

Правда я немного не понял, как работает этот io_service.run(), я понял, что это некий бесконечный цикл опроса ОС на предмет прерывания по хендлеру, но только это и понял, вот сделал так:

Код:
void handler_resolve(const boost::system::error_code& error, tcp::resolver::iterator endpoint_iterator)
{
	if (!error)
	{
		std::cout << "Резолв успешен" << endl;

		tcp::endpoint endo_pointo = *endpoint_iterator;

		cout << endo_pointo.address().to_string() << endl;
	}
	else
	{
		std::cout << "Ошибка: " << error.message() << endl;;
	}
}

int main()
{
Vector_result_list.size(3);
Vector_result_list[0]="www.games.ru"
Vector_result_list[1]="www.url2"
Vector_result_list[2]="www.url3"

boost::asio::io_service io_services;

	tcp::resolver resolvers(io_services);
	tcp::socket socks(io_services);
	boost::system::error_code ec;

	for (int i = 0; i < Vector_result_list.size(); i++)
	{
		tcp::resolver::query query(Vector_result_list[i], "80");

		resolvers.async_resolve(query, handler_resolve);
	}
io_services.run();
}
То есть получается, что я сначала отправил все необходимые запросы на резолвы и после всех запросов запустил io_services.run();
Но если, я вставлю io_services.run() в цикл и буду запускать каждый раз после async_resolve, то хендлер срабатывает, только на последний запрос.

Но, что если к примеру необходимо отправить ну условно тысячу запросов на резолв, то есть получается, что сначала нужно их все отправить и только потом запустить io_services.run() ? Может быть к 10 запросу, уже придет ответ на 1 запрос, а у меня еще io_services.run(), так как нужно оправить еде 990 запросов.
Android1 вне форума Ответить с цитированием
Старый 11.08.2019, 23:13   #26
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну так запустите поток/потоки и там крутите run. Почитайте же документацию
p51x вне форума Ответить с цитированием
Старый 12.08.2019, 12:29   #27
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 121
По умолчанию

Я пока ищу про потоки в документации, если Вам вдруг не очень сложно Вы бы немогли немного хотя бы пояснить, что это за потоки ?
Какую роль они выполняют ?
Эти потоки связаны с ядрами процессора или это какие то другие потоки ?
Android1 вне форума Ответить с цитированием
Старый 12.08.2019, 12:36   #28
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

https://en.wikipedia.org/wiki/Thread_(computing)

Скажите, если у вас такие знания, нафига вы полезли в асинхронность?
p51x вне форума Ответить с цитированием
Старый 12.08.2019, 12:51   #29
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 121
По умолчанию

Спасибо! Буду читать.
Ну ассинхронные запросы якобы работают быстрее или более эффективно используют процессор, наверное поэтому, но я не программист и соответсвующего оброзования у меня нет, и никогда до этого я ничего подобного не изучал, поэтому как то вот так
Android1 вне форума Ответить с цитированием
Старый 12.08.2019, 13:03   #30
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Android1 Посмотреть сообщение
якобы работают быстрее или более эффективно используют процессор
Сделайте хотя бы синхронно для начала. Думаю, Вы не особо заметите разницу. А вот если таки упрётесь в скорость/эффективность, тогда будете переписывать работающий вариант на асинхронность
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Boost] ASIO Buffer S.Ruslan C/C++ Сетевое программирование 7 25.03.2019 13:34
boost/asio MayhemWithMercy C/C++ Сетевое программирование 1 11.06.2014 17:44
boost ASIO сериализация Kukurudza Общие вопросы C/C++ 2 06.12.2011 13:38
Boost::Asio on Mingw russian-stalker Общие вопросы C/C++ 0 05.01.2011 16:27
Boost (asio + thread) - noncopyable MInner Общие вопросы C/C++ 1 06.12.2009 16:41