Re[6]: Максимальная длина TCP пакета в сети
От: AlexGin Беларусь  
Дата: 10.02.20 18:35
Оценка:
Здравствуйте, уважаемый Pzz, Вы писали:

Pzz>Что-то одно из двух убрать, или длину, или маркер конца. С длиной приемник будет эффективнее работать: не надо будет сканировать каждый байт в поисках маркера.



Дело в том, что в Qt реализации TCP подсистемы имеет место генерация сигнала readyRead объектом типа QTcpSocket
в тот самый момент, когда фрагмент (или блок) данных поступил на приёмник от дальнего_конца.

Я подписываюсь (своим слотом) на вышеуказанный сигнал.
Когда данный сигнал успешно отработал, ко мне приходит массив байтов типа QByteArray (его общая длина — известна).

Этот массив — может представлять собой целый блок (ну то-есть пользовательский_пакет) или же только его фрагмент.
Я же проверяю не все байты, а только четыре_последних_байта на маркер конца:
— если его нет, то помещаю этот массив в "накопитель" и жду недостающие фрагменты;
— если он есть — считаем что блок данных успешно принят — его можно применять.
Отредактировано 10.02.2020 18:39 AlexGin . Предыдущая версия . Еще …
Отредактировано 10.02.2020 18:38 AlexGin . Предыдущая версия .
Отредактировано 10.02.2020 18:37 AlexGin . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.