Название: Qt 4.4.0 - проблемы с QTcpSocket Отправлено: ElderOrb от Июль 04, 2008, 15:48 По каким-то причинам при интенсивном приёме множества маленьких пакетов ( < 100 байт) начинает плохо работает QTcpSocket::readAll.
Точнее сказать мы крутимся в цикле внутри функции qint64 QAbstractSocket::readData(char *data, qint64 maxSize) и никогда из него не выходим. Вот этот конкретный кусок кода: Код: while (readSoFar < bytesToRead) { Причем что интересно, вначале (секунд 5-10) всё нормально, а потом происходит вышеописанное. Что за дьявольщина? Проверял под 4.3.3 - та же херня, что навевает мысли о том что я где-то не правильно использую QTcpSocket. Хотя я ничего кроме readAll по сигналу readyRead не делаю.. Да, вот ещё, я пробовал асинхронный сокет в гуёвом потоке/рабочем потоке - из изменений только логичное не-зависание гуя, в остальном всё так же. Что это может быть и что ещё можно проверить? Название: Re: Qt 4.4.0 - проблемы с QTcpSocket Отправлено: Zmeishe от Июль 04, 2008, 20:10 Ну на вскидку, не вдаваясь в подробности, могу скопипастить сюда свой кусок кода, стабильно работающий около трёх лет.
Немного урезанный. Первое, что записано в сокет - это размер передаваемых данных, пока всё не пришло - ждёмс. И только потом начинаем разбор. Код: quint64 byteCount = 0; |