Russian Qt Forum
Ноябрь 22, 2024, 23:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Передача XML по сети  (Прочитано 15592 раз)
Sancho_s_rancho
Гость
« Ответ #15 : Ноябрь 07, 2012, 08:59 »

А небольшие это сколько? Кто даст гарантию, что "небольшой" не прилитит "маленькими" частями?
Никто не даст. Скорее ввсего и небольшой прилетит частями. Просто небольшой прилетит быстрее Улыбающийся
Записан
Serr500
Гость
« Ответ #16 : Ноябрь 07, 2012, 09:23 »

И какого размера должен быть этот xml, чтобы он гарантировано пришел одним куском?
1 байт (это не шутка!)
Записан
mutineer
Гость
« Ответ #17 : Ноябрь 07, 2012, 11:09 »

А небольшие это сколько? Кто даст гарантию, что "небольшой" не прилитит "маленькими" частями?
Никто не даст. Скорее ввсего и небольшой прилетит частями. Просто небольшой прилетит быстрее Улыбающийся

Ну и в чем смысл отправлять "небольшой" xml, если все равно не гарантировано что он придет сразу весь? В чем смысл этого улучшения? Увеличить вероятность правильной работы?
Записан
Странник
Гость
« Ответ #18 : Февраль 15, 2013, 15:28 »

А как принимать xml-документ , как понять , что целиком принят документ , что больше не будет продолжения передачи? Так как приняв часть, обрабатывается только принятая часть, а послав продолжение , то так как нет началА XML-документа , то продолжение как xml-документ не воспринимается?!

Возможно же, передача по частям xml-документа , f не обязательно целиком?!
поскольку для передачи я рекомендовал использовать QXmlStreamWriter, для чтения подразумевалось использовать QXmlStreamReader, поддерживающий инкрементальный парсинг. вот выдержка из документации, поясняющая модель использования:
Цитировать
QXmlStreamReader is an incremental parser. It can handle the case where the document can't be parsed all at once because it arrives in chunks (e.g. from multiple files, or over a network connection). When the reader runs out of data before the complete document has been parsed, it reports a PrematureEndOfDocumentError. When more data arrives, either because of a call to addData() or because more data is available through the network device(), the reader recovers from the PrematureEndOfDocumentError error and continues parsing the new data with the next call to readNext().

For example, if your application reads data from the network using a network access manager, you would issue a network request to the manager and receive a network reply in return. Since a QNetworkReply is a QIODevice, you connect its readyRead() signal to a custom slot, e.g. slotReadyRead() in the code snippet shown in the discussion for QNetworkAccessManager. In this slot, you read all available data with readAll() and pass it to the XML stream reader using addData(). Then you call your custom parsing function that reads the XML events from the reader.
связкой пользуюсь давно и в целом успешно. натыкался на какие-то мелкие грабли, но уже и не вспомню.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 20.