crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QUdpSocket - баг с pendingDatagramSize() ?
Алексей1153
  опции профиля:
сообщение 17.1.2019, 8:43
Сообщение #1


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


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 победить ?

Сообщение отредактировал Алексей1153 - 17.1.2019, 8:49
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 25.1.2019, 10:57
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


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


данный костыль работает нормально, пакеты не теряются. Другого решения не нашёл пока что
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 12:27