Функция Qt QTcpSocket readAll не читает все данные из сокета

Я получил супер простой код.

QTcpSocket* sock = new QTcpSocket();
connect(sock - readyread) and other signals
sock->connectToHost();
sock->write();

//readyread
qDebug() << "available" <<  sock->bytesAvailable();
QByteArray a = sock->readAll
qDebug() << "readed"  << a.size()

и на выходе я получил:

доступно - 4677 прочитано - 681

доступно - 8760 прочитано - 114

доступно - 10899 прочитано - 59


person tty6    schedule 26.03.2015    source источник
comment
возможный дубликат пакетов TCP с использованием QTcpSocket   -  person TheDarkKnight    schedule 26.03.2015
comment
@TheDarkKnight как полностью работающее решение уже использовало простое чтение (socket-›bytesAvailable), и это работает! но ваша ссылка также полезна.   -  person tty6    schedule 26.03.2015
comment
bytesAvailable возвращает целое число, а не ваши данные. Вы уверены, что не просто читаете мусор?   -  person awpitt13    schedule 27.03.2015


Ответы (1)


Проблема заключалась в многократном подключении к сигналу ReadyRead в моей конкретной реализации сети. (в родительском и в дочернем классе) Мой плохой

person tty6    schedule 13.04.2016