crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QUdpSocket - баг с pendingDatagramSize() ?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 25.1.2019, 10:57
 
Цитата(Алексей1153 @ 17.1.2019, 10:43) *
перешёл к использованию hasPendingDatagrams()+bytesAvailable() (а pendingDatagramSize не смотрю вообще),
поскольку readDatagram читает одну датаграмму, даже если указать больше её длины при чтении


данный костыль работает нормально, пакеты не теряются. Другого решения не нашёл пока что
Алексей1153 Дата 17.1.2019, 8:43
  Qt 5.9.2
QUdpSocket

наткнулся на странное поведение класса:

s->hasPendingDatagrams() возвращает true, ок, иду вызывать s->pendingDatagramSize() - а функция поначалу действительно возвращает размеры пакетов, но в какой-то момент начинает возвращать -1

это при том, что hasPendingDatagrams() ==true, bytesAvailable()>0 :blink:

в такой ситуации, однако, возвращается ошибка UnknownSocketError, причём очистить ошибку можно только попыткой чтения датаграммы длиной 0 байтов

s->readDatagram(ba, 0);


---------------------

перешёл к использованию hasPendingDatagrams()+bytesAvailable() (а pendingDatagramSize не смотрю вообще),
поскольку readDatagram читает одну датаграмму, даже если указать больше её длины при чтении

но при этом иногда таки проскакивает bytesAvailable()==1. при этом датаграмма теряется при попытке чтения, насколько я понимаю. Ошибка возвращается такая:
QAbstractSocket::ConnectionRefusedError / "Connection reset by peer"
---------------------

кто знает, как баг с pendingDatagramSize победить ?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.2.2020, 14:29