Название: QSocket - как прочитать большой текст? Отправлено: Demonn от Декабрь 19, 2005, 14:31 Добрый день!
В качестве клиента использую описанный в примерах QT ClientSocket, наследующийся от QSocket. Все работает нормально, пока принимаются небольшае блоки данных. Когда же попробовал принять текст размеров в 1Мб, то получил, что он принимается блоками, где по 4Кб, а так как этот текст является xml-скриптом, то, естественно, при попытке обработки возникает ошибка, т.к. вместо одного цельного текста программа пытается обработать кучу "нарезок". Как определить, что принят весь блок? Вот описание функции readClient() Код: void ClientSocket::readClient() Название: QSocket - как прочитать большой текст? Отправлено: Dendy от Декабрь 19, 2005, 15:17 Я так розумію в тебе Qt 3.x
В Qt 4 можна заюзати: Код: QXmlSimpleReader::parse( input, true ); Название: QSocket - как прочитать большой текст? Отправлено: Demonn от Декабрь 19, 2005, 15:26 > Dendy
Верно разумеешь :) Вот только если уйти от xml, а остановится на произвольном тексте - как определить, весь он получен или нет? Название: QSocket - как прочитать большой текст? Отправлено: Dendy от Декабрь 19, 2005, 15:46 Пересилай перші 4 (2? 8?) байт розмір текста, далі сам текст шматками.
Название: QSocket - как прочитать большой текст? Отправлено: DenKor от Декабрь 20, 2005, 08:57 Надо вводить пересылку управляющей информации.
Например в начале пересылки отправить структуру фиксированной длины имя файла его размер и т.д. Соответсвенно в конце опять передаешь блок управляющей информации. Например смотри реализацию протокола binkp Где все это реализовано. Иначе никак |