QTcpSocket подключается к серверу, после чего начинает обмениваться с ним данными. Интересует, можно ли как-то узнать, доставлены ли данные после вызова метода write? Есть сигнал bytesWritten, но он вызывается, после вызова write() даже когда данные не доставлены. Так же, есть сигнал readyRead, сервер после получения данных должен присылать ответ, можно после write поднимать флаг, а при вызове readyRead его сбрасывать, если сброс не произошел по таймауту, то переподключаться и отправлять этот пакет заново. Но насколько знаю, TCP позволяет контролировать доставку данных, или я ошибаюсь?
Вообще протокол TCP должен гарантировать 100%-ю доставку данных и о таких проблемах я не слышал.
Теоретически может срабатывать алгоритм Нейгла:
socket->setSocketOption(QAbstractSocket::LowDelayOption, true)
(надо сделать на обоих концах).Спасибо за ответ!
Но всё же, не понятно, как можно узнать о том, что данные дошли? Даже если отключил этот алгоритм, то сигнал bytesWritten вызывается сразу же после вызова метода write(), даже если данные не дошли.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)