Russian Qt Forum

Qt => Работа с сетью => Тема начата: AlexEx от Январь 23, 2023, 14:20



Название: QUdpSocket закрывается при host unreachable
Отправлено: AlexEx от Январь 23, 2023, 14:20
Проблема: QUdpHost байндится на локальный порт, затем делается writeDatagram. Если порт, на который посылается, недоступен, сокет закрывается, а при следующем writeDatagram байндится на левый (первый свободный) порт. Сейчас приходится перед writeDatagram проверять состояние сокета и, если надо, байндить снова. Можно ли отучить QUdpSocket закрываться при недоступности узла? Работа синхронная в отдельном потоке. Windows, Astra Linux.


Название: Re: QUdpSocket закрывается при host unreachable
Отправлено: qate от Январь 26, 2023, 20:14
покажи минимальный пример такого поведения - не должно такого быть
астра какая конкретно, а если se то какой режим (орел, смоленск) ?


Название: Re: QUdpSocket закрывается при host unreachable
Отправлено: AlexEx от Январь 27, 2023, 11:41
Вроде, проблему решил. Костыль, конечно. Глянул Qt-шные исходники. Унаследовался от QUdpSocket и сделал пустым disconnectFromHost(). И под Win и под Astra всё едино. А так Astra se 1.6, Windows 10.


Название: Re: QUdpSocket закрывается при host unreachable
Отправлено: AlexEx от Январь 27, 2023, 14:15
Только что выяснил. Проблема есть только при блокирующих сокетах из отдельного потока.


Название: Re: QUdpSocket закрывается при host unreachable
Отправлено: qate от Январь 27, 2023, 19:15
Проблема есть только при блокирующих сокетах из отдельного потока.

т.е. при работе без событий readyread ?


Название: Re: QUdpSocket закрывается при host unreachable
Отправлено: AlexEx от Январь 29, 2023, 14:53
Да, именно так.