Вверх ↑
Этот топик читают: Гость
Ответов: 96
Рейтинг: 0
#1: 2008-09-10 11:14:40 ЛС | профиль | цитата
Никак не могу придумать красивый способ парсинга http stream от TCP_Client.
Если DataType выставлять в dtString, то сохранять приходится в рваном виде в списке строк.
Может кто-нибудь подскажет как парсить dtStream?
Задача - выдрать из потока картинку.
карма: 1

0
Ответов: 3851
Рейтинг: 159
#2: 2008-09-10 11:25:29 ЛС | профиль | цитата
э, я не совсем представляю о чём речь, но когда пришлось работать с рваным текстом, я использовал это code_9941.txt для буферизации. Ну мне было проще - имелся чёткий признак начала/конца блока..
карма: 0
начавший
0
файлы: 1code_9941.txt [383B] [181]
Ответов: 96
Рейтинг: 0
#3: 2008-09-10 11:34:05 ЛС | профиль | цитата
Теперь я не совсем понял... Это ж вроде как вариация на тему массива строк?
Не-е, я имею ввиду парсинг потока, а не массива строк.
карма: 1

0
Ответов: 3851
Рейтинг: 159
#4: 2008-09-10 11:47:58 ЛС | профиль | цитата
Alexeylp писал(а):
то сохранять приходится в рваном виде в списке строк
я это имел в виду. По поводу самого парсинга ничего сказать не могу ибо не знаком с протоколом HTTP. Наверное всё зависит от того - что тебе надо - мне например понадобилось вынимать телепрограмму, я это сделал, новые картинки из галереи с тяжёлым (для пользователя) HTML интерфейсом - тоже получилось, и т.д., но иногда попадаются страницы, которые мне трудно понять..
карма: 0
начавший
0
Ответов: 893
Рейтинг: 18
#5: 2008-09-10 14:01:58 ЛС | профиль | цитата
Alexeylp писал(а):
Никак не могу придумать красивый способ парсинга http stream от TCP_Client.

Во я рад что хоть ктото тоже работает в томже направлении , вобщимто я пытался тоже обработать в stream http но есть несколько проблем , http заголовок в str а далее идет в stream разделителем можно считать и [b]
[/b]
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 96
Рейтинг: 0
#6: 2008-09-13 16:07:35 ЛС | профиль | цитата
Баг в TCP_Client, однозначно.
Jpg-файл от камеры, который я пытаюсь принять должен весить 20-35 Кб, а доходит только 500-8500 байт.
Причем заголовок ответа GET и начало файла есть всегда, иногда есть даже конец файла, а вот середина обрывками.
TCP_Client получает данные только в режиме dtString, в остальных режимах молчит как партизан, ни байта не говорит.
Браузеры получают картинку легко, сниффер тоже видит всё хорошо.
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#7: 2008-09-13 17:09:49 ЛС | профиль | цитата
Alexeylp писал(а):
Баг в TCP_Client, однозначно.

прежде чем делать такие сенсационные выводы советую ознакомится с примером SendPicture.sha.
карма: 27
0
Ответов: 96
Рейтинг: 0
#8: 2008-09-13 17:27:45 ЛС | профиль | цитата
В схеме SendPicture.sha используется режим dtStream и данные пересылаются от клиента к серверу, а не наоборот.
Так-что аналогия некорректна.
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2008-09-13 21:06:47 ЛС | профиль | цитата
Alexeylp, если цель данной темы убедить автора в том, что он дурак и не понимает как, когда и при каких условиях работает его элемент, то обсуждение мы на этом закончим. Если же все же есть желание разобраться таки в проблеме предлагаю открыть таки означенный выше пример и изменив связи соответствующим образом убедиться, что направление посылки данных абсолютно не важно. После чего предоставить нам доказательство наличия бага в виде короткого примера, который каждый сможет повторить у себя.
карма: 27
0
Гость
Ответов: 17029
Рейтинг: 0
#10: 2008-09-14 02:01:11 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-04 14:35:24
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#11: 2008-09-14 11:56:53 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-04 14:35:25
карма: 0

0
Ответов: 893
Рейтинг: 18
#12: 2008-09-15 16:14:24 ЛС | профиль | цитата
Alexeylp писал(а):
Никак не могу придумать красивый способ парсинга http stream от TCP_Client.
Если DataType выставлять в dtString, то сохранять приходится в рваном виде в списке строк.
Может кто-нибудь подскажет как парсить dtStream?
Задача - выдрать из потока картинку.

Alexeylp, суть в следующем , ты принимаеш картинку не в одном пакете а в нескольких , тоесть заголовок HTTP придёт один с куском данных , а дальше начинают партиями поступать данные пока не примеш их все , задача состоит в следующем , отделить первую часть данных от HTTP заголовка , и начинать складывать поступающие части , причём в HTTP заголовке хранится количество байт для подсчёта принятых данных (это намёк ).
А дальше можеш делать с этими данными что хочеш , ещё ... не советую складывать данные в текстовую область , она добавляет знаки перевода строки , от которых потом просто не избавится.....
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)