Вообще протокол TCP должен гарантировать 100%-ю доставку данных и о таких проблемах я не слышал.
Теоретически может срабатывать алгоритм Нейгла:
Цитата
...Алгоритм Нейгла работает путем объединения нескольких небольших исходящих сообщений, а затем отправки их всех сразу. В частности, пока существует отправленный пакет, для которого отправитель еще не получил никакого подтверждения о доставке, отправитель должен держать в буфере его данные для отправки, до тех пор, пока не наберется достаточно данных на полный пакет, который можно отправить единожды...
Читать на википедииЕсли коротко, то он маленькие пакеты сразу не отправляет, а ждет пока накопится определенный объем или не наступит таймаут.
Отключить это на Qt:
socket->setSocketOption(QAbstractSocket::LowDelayOption, true)
(надо сделать на обоих концах).
Но и простой отчет о доставке реализовать просто (но протокол TCP делает это внутри себя)