Название: Прекращение поступления данных в UDP порт (решено) Отправлено: Примерный ученик от Ноябрь 20, 2020, 09:30 QT5.11, Debian, GDB
Клиент слушает UDP порт, принимает данные и обрабатывает. Какое то время может час, а может и несколько дней, все нормально, а потом прием прерывается. В режиме отладчика событие readyRead() не возникает, по крайней мере точка останова не срабатывает. QByteArray m_InternalBuffer; // буфер чтения Код: void udpClient::on_readyRead() Перезапуск источника UDP не помогает. Перезапуск приемника UDP - опять нормальная работа какое то время. Где искать причину и как? Как в отладчике можно найти точку, где сейчас выполняется код запущенного под отладчиком приложения? Название: Re: Прекращение поступления данных в UDP порт Отправлено: qate от Ноябрь 20, 2020, 21:23 может был баг в qt ?
ну и на минимальном примере проверяй, чтобы убрать возможные баги в своем коде Название: Re: Прекращение поступления данных в UDP порт (решено) Отправлено: Примерный ученик от Март 25, 2021, 07:53 Разобрался. Ошибка в том, что сначала в слоте происходило чтение всего, что пришло, а потом проходила обработка и выход.
Дело в том, что если работает слот, то новая информация добавляется в буфер, но сигнал не испускается. Если выйти из слота, оставив необработанные данные, то сигнала больше не будет. Буфер не пуст, новые данные добавляются, сигнала нет. Код: void udpClient::on_readyRead() На всякий случай еще и поставил таймер для принудительной отправки сигнала наличия информации. Зависаний больше нет. |