crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Передача изображений броузеру через сокет
PotapovPV
  опции профиля:
сообщение 28.4.2010, 22:23
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 28.4.2010
Пользователь №: 1672

Спасибо сказали: 0 раз(а)




Репутация:   0  


Возникла задача по написанию эмулятора веб-сервера: приложение получает xml-файл, из которого считывает инструкции по формированию ответов в зависимости от запросов (фактически, формирует пары запрос-ответ, и укладывает их в QMap), после чего начинает принимать через сокет с 80 порта запросы от браузеров и выдавать заранее определенные ответы.
Ответы формируются следующим образом: из xml-файла с помощью SAX лепится QString со стартовой строкой и заголовками, из которого делается QHttpResponseHeader. Так же из передаваемого файла (html, jpg и пр.) с помощью QTextStream считываются данные в QString, а затем все это запихивается в структуру:
struct
{
QHttpResponseHeader;
qstrBody QString;
}
Когда запрос надо отправлять - QHttpResponseHeader преобразуется к строке, к ней QString.append("\r\n"), QString.append(qstrBody), и эта строка благополучно отправляется в сокет.
С HTML файлами схема работает - получаются и отображаются корректно. А вот изображения браузером отображаться никак не хотят...
Поймал пакет с ответом, содержащим изображение снифером, написано "This is not a valid JFIF (JPEG) object"
Кто-нибудь может что-нибудь посоветовать?
Скорее всего суть в том, что для чтения jpeg-файла нужно применять какие-то другие методы?
Изначально была мысль что я что-то забываю с заголовками, но вроде все уже перепробовал...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
azure
  опции профиля:
сообщение 29.4.2010, 8:30
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 24.12.2009
Пользователь №: 1332

Спасибо сказали: 5 раз(а)




Репутация:   0  


Цитата(PotapovPV @ 28.4.2010, 22:23) *
Поймал пакет с ответом, содержащим изображение снифером, написано "This is not a valid JFIF (JPEG) object"
Кто-нибудь может что-нибудь посоветовать?
Скорее всего суть в том, что для чтения jpeg-файла нужно применять какие-то другие методы?
Изначально была мысль что я что-то забываю с заголовками, но вроде все уже перепробовал...


Используйте QByteArray.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PotapovPV
  опции профиля:
сообщение 6.5.2010, 18:21
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 28.4.2010
Пользователь №: 1672

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(azure @ 29.4.2010, 9:30) *
Используйте QByteArray.

Проблема оказалась в лишнем "\r\n" после заголовков - не знал что QHttpResponseHeader возвращает из .toString() строку, заканчивающуюся на \r\n\r\n... Но программу все равно перевел на QByteArray.
Спасибо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 10.7.2020, 12:53