Здравствуйте, Vinick, Вы писали:
K>>Необходимо при отсутствии данных в течение некоторого времени записать в socket тестовую посылку. Может быть следующая последовательность событий:
K>>1) прочитали часть посылки
K>>2) сработал таймер ???
V>Не совсем понятно что означает "посылка". Это какая-то структура переменной длины или фиксированный массив байт?
псылка/сообщение/и т.д. в данном контексте означает последовательность байт фиксированной длины, которая читается в буфер соответствующего размера
V>async_read вызовет хендлер только при полном заполнении буффера или при ошибке. Если посылка целиком умещается в буфер, то такая ситуация невозможна, при условии что io_service::run() запущен в одном потоке.
Вы хотите сказать что, если началось чтение, то хандлер таймера не вызовется пока не заполниться весь буфер? но это же не так
K>>Думаю что надо использовать вариант async_read для чтения с условием, а в обработчике проверки условия после первого байта останавливать таймер, а после последнего запускать
V>Получите первый байт, остановите таймер, после этого произойдет задержка и следующий байт получите только через 10 часов, а таймер то выключен
неее, за это отвечает другой таймер, назовем его t2
а про таймер который я говорю(назовем его t3), работает для того чтобы, если не было никаких сообщений некоторое время, то послать сообщение проверки связи