Kalombyr
@Kalombyr

Как наиболее правильно считывать данные из QUdpSocket?

Доброго дня!
В отдельный поток вынес работу с сокетами и встал вопрос, как будет наиболее правильным получать пакеты.

Либо как обычно, подписавшись на событие:
connect(_socket, &QUdpSocket::readyRead, this, &UDPStream::onReadyRead);

или же в цикле потока
if (_socket->hasPendingDatagrams()) {
        QByteArray data;
        data.resize(_socket->pendingDatagramSize());
        .........
}


Что будет, если я буду опрашивать с интервалом, к примеру, в 3мс? Имею ввиду не будет ли происходить потерь, пока очередной пакет не будет обработан? Т.е. будут ли все дошедшие UDP пакеты становится в очередь и в ней ожидать, пока не будут прочитаны? Если да, то какой размер этой очереди (я предполагаю, что этим уже сетевая карта/система занимается, но всё же)?
  • Вопрос задан
  • 179 просмотров
Пригласить эксперта
Ответы на вопрос 1
IGHOR
@IGHOR Куратор тега Qt
Qt/C++ DEV/CTO
И так и так сработает. Размер очереди зависит от пропускной способности и занятости сетевого адаптера.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы