Пропадание сетевого обмена |
Здравствуйте, гость ( Вход | Регистрация )
Пропадание сетевого обмена |
KuvshinoF |
15.4.2020, 18:14
Сообщение
#1
|
Студент Группа: Участник Сообщений: 74 Регистрация: 25.7.2013 Пользователь №: 3887 Спасибо сказали: 0 раз(а) Репутация: 0 |
Программа_1 бесконечно посылает 1 раз в секунду определенный набор байтов, а программа_2 его читает, обрабатывает и визуализирует.
Чтение по udp сетевых данных в программе_2:
Проблема в том, что программа_2 принимает всего около 10 сетевых посылок, а потом vReadDatagram перестает вызываться, как будто перестают идти данные от программы_1, но это не так (проверено индикацией данных от программы_1 в простейшей программе_3 и tcpdump-ом). Программа_2 достаточно сложна (многопоточна, gui c opengl) и что может приводить к такому "сетевому обрыву" - непонятно. Сообщение отредактировал KuvshinoF - 20.4.2020, 11:35 |
|
|
Алексей1153 |
20.4.2020, 11:03
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
vReadDatagram(); // описана ранее в первом сообщении темы так а где этот слот находится то ? В потоке или в главном окне? У меня смутные подозрения, что с синхронизацией напутано тут не вижу вызов moveToThread нигде class Interaction : public QThread { QUdpSocket oUDPSocket; QByteArray baoBufRecv; у тебя рабочий объект и поток - одним классом. Тогда уж лучше унаследоваться от QThread А в твоём варианте рабочий объект должен быть отдельно от потока. Рабочий объект создаётся в ОСНОВНОМ потоке, настраивается, затем перемещается в контекст потока. Я эту практику недолюбливаю, ей не пользуюсь, поэтому за деталями - в интернет ) Я обычно наследуюсь и не испытываю этот гемор Сообщение отредактировал Алексей1153 - 20.4.2020, 11:07 |
|
|
Текстовая версия | Сейчас: 26.11.2024, 8:44 |