Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 12.08.2019, 13:46   #31
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 113
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Сделайте хотя бы синхронно для начала
Синхронно сделал, синхронно работает.
Android1 вне форума Ответить с цитированием
Старый 12.08.2019, 14:31   #32
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,712
По умолчанию

И что, производительность не устраивает?
Black Fregat вне форума Ответить с цитированием
Старый 12.08.2019, 14:37   #33
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 113
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
И что, производительность не устраивает?
Устраивает но и тут есть нюанс, к примеру если делать http запрос на сервер, и к примеру не указать connection close, то операция read ждет пока сервер закроет соединение, а значит все это время стпочка read заблокирована.
Но, я как бы и не из за этого, просто если есть асинхронные операции, наверное надо их использовать.
Android1 вне форума Ответить с цитированием
Старый 12.08.2019, 14:39   #34
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 113
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Ну так запустите поток/потоки и там крутите run. Почитайте же документацию
Подскажите пожалуйста, а потоки именно нужно бустовские или с std::thread тоже будет работать ?
Android1 вне форума Ответить с цитированием
Старый 12.08.2019, 20:32   #35
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 113
По умолчанию

Подскажите, а как из main`а получить значения, которые вызвались в хэндлере ?
Android1 вне форума Ответить с цитированием
Старый 12.08.2019, 21:31   #36
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Цитата:
Сообщение от Android1 Посмотреть сообщение
тоже будет работать ?
Будет

Цитата:
Сообщение от Android1 Посмотреть сообщение
а как из main`а получить значения, которые вызвались в хэндлере ?
Зачем они вам там? Вы опять мыслите в синхронном коде? Но если надо используйте примитивы синхронизации и другие стандартные способы для общения потоков.
p51x вне форума Ответить с цитированием
Старый 12.08.2019, 22:14   #37
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 113
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Зачем они вам там? Вы опять мыслите в синхронном коде?
Ну для примера, предположим нужно сделать 1000 резолвов и записать резудьтат резолва в вектор в соответствии с адрессом.
Android1 вне форума Ответить с цитированием
Старый 14.08.2019, 08:52   #38
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 113
По умолчанию

А все таки, как синхронная функция read понимает, что чтение закончено и что можно пеоеходить к следующей строчке кода ?
С read_until понятно оно читает до определенного символа или набора символов. Но как read то понимает ? Все таки, что бы read зааершило мвою работу сл стлрлны сервера соединение должно быть или уничтожено или за shutdown'нино ?

Если так, то не могу хотя бы примерно понять, как тогда клиент поддерживает постоянный прием и чтение данных от сервера пл постоянному keepalive соединению.
Android1 вне форума Ответить с цитированием
Старый 14.08.2019, 09:07   #39
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Цитата:
Сообщение от Android1 Посмотреть сообщение
А все таки, как синхронная функция read понимает, что чтение закончено и что можно пеоеходить к следующей строчке кода ?
Открываете докумнтацию, открываете нужную перегрузку и смотрите. Обычно там ошибка, размеры буферов, предикат остановки...

Цитата:
Сообщение от Android1 Посмотреть сообщение
Все таки, что бы read зааершило мвою работу сл стлрлны сервера соединение должно быть или уничтожено или за shutdown'нино ?
Нет

Цитата:
Сообщение от Android1 Посмотреть сообщение
то не могу хотя бы примерно понять, как тогда клиент поддерживает постоянный прием и чтение данных от сервера пл постоянному keepalive соединению.
Записали, почитали кусок, попарсили, дальше читаем или пишем...
p51x вне форума Ответить с цитированием
Старый 14.08.2019, 10:47   #40
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 113
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Открываете докумнтацию, открываете нужную перегрузку и смотрите. Обычно там ошибка, размеры буферов...
Вот тут так и написано, как Вы написали:
https://www.boost.org/doc/libs/1_66_...ence/read.html

То есть условие завершения read это или заполненость нужного буфера или ошибка, но естественно, я не могу знать заранее размер буффера, или ждать пока наступить ошибка, ну к примеру та самая eof потока.

Но дело даже не в этом:
Цитата:
Сообщение от p51x Посмотреть сообщение
Записали, почитали кусок, попарсили, дальше читаем или пишем...
Предположим есть сервер, который по keepalive выдает данные раз в секунду, ну к примеру температуру на улице, то есть write'ом я послал запрос, read'ом прочитал ответ на запрос и записал в предоставленный ему streambuf, но read не заверршается, так как сервер держит соединение активным, через секунду сервер шлет еще данные, еще через секунду еще итд, то есть функция read работает, данные пишутся в буффер, но достать данные из буффера я могу только после завершение функции read, а не во время его выполнения.
Вот чего неронятно.
Android1 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Boost] ASIO Buffer S.Ruslan C/C++ Сетевое программирование 7 25.03.2019 13:34
boost/asio MayhemWithMercy C/C++ Сетевое программирование 1 11.06.2014 16:44
boost ASIO сериализация Kukurudza Общие вопросы C/C++ 2 06.12.2011 12: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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840