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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Boost] ASIO Buffer S.Ruslan C/C++ Сетевое программирование 7 25.03.2019 14: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 17:27
Boost (asio + thread) - noncopyable MInner Общие вопросы C/C++ 1 06.12.2009 17:41


12:50.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.