QUdpSocket - баг с pendingDatagramSize() ? |
Здравствуйте, гость ( Вход | Регистрация )
QUdpSocket - баг с pendingDatagramSize() ? |
Алексей1153 |
17.1.2019, 8:43
Сообщение
#1
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Qt 5.9.2
QUdpSocket наткнулся на странное поведение класса: s->hasPendingDatagrams() возвращает true, ок, иду вызывать s->pendingDatagramSize() - а функция поначалу действительно возвращает размеры пакетов, но в какой-то момент начинает возвращать -1 это при том, что hasPendingDatagrams() ==true, bytesAvailable()>0 в такой ситуации, однако, возвращается ошибка UnknownSocketError, причём очистить ошибку можно только попыткой чтения датаграммы длиной 0 байтов s->readDatagram(ba, 0); --------------------- перешёл к использованию hasPendingDatagrams()+bytesAvailable() (а pendingDatagramSize не смотрю вообще), поскольку readDatagram читает одну датаграмму, даже если указать больше её длины при чтении но при этом иногда таки проскакивает bytesAvailable()==1. при этом датаграмма теряется при попытке чтения, насколько я понимаю. Ошибка возвращается такая: QAbstractSocket::ConnectionRefusedError / "Connection reset by peer" --------------------- кто знает, как баг с pendingDatagramSize победить ? Сообщение отредактировал Алексей1153 - 17.1.2019, 8:49 |
|
|
Алексей1153 |
25.1.2019, 10:57
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
перешёл к использованию hasPendingDatagrams()+bytesAvailable() (а pendingDatagramSize не смотрю вообще), поскольку readDatagram читает одну датаграмму, даже если указать больше её длины при чтении данный костыль работает нормально, пакеты не теряются. Другого решения не нашёл пока что |
|
|
Текстовая версия | Сейчас: 27.11.2024, 23:19 |