Здравствуйте, гость ( Вход | Регистрация )
Алексей1153 | Дата 25.1.2019, 10:57 |
перешёл к использованию 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 в такой ситуации, однако, возвращается ошибка UnknownSocketError, причём очистить ошибку можно только попыткой чтения датаграммы длиной 0 байтов s->readDatagram(ba, 0); --------------------- перешёл к использованию hasPendingDatagrams()+bytesAvailable() (а pendingDatagramSize не смотрю вообще), поскольку readDatagram читает одну датаграмму, даже если указать больше её длины при чтении но при этом иногда таки проскакивает bytesAvailable()==1. при этом датаграмма теряется при попытке чтения, насколько я понимаю. Ошибка возвращается такая: QAbstractSocket::ConnectionRefusedError / "Connection reset by peer" --------------------- кто знает, как баг с pendingDatagramSize победить ? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 11:02 |