Сам я предпочитаю использовать внешнее его размещение по <SrcDir> и установкой внешнего плеера, не приходится вставлять его и выкидывать из проекта, при изменении в нем. Возможно, в пример proektN.zip и не попала самая последняя версия, по этому еще раз все проверив, выкладываю пример со вложенным плагином, последней версии.
Добавлено (19 Март 2010, 23:32) --------------------------------------------- Добавил фукцию gethtml0 - получение ответа(хтмл), как предусмотрено хттп протоколом, часть ответа, после двойного перевода строки. Поставил защиту от дурака на функцию getheader -теперь при ее выполнении без наличия ответа, просто ничего не происходит. gethtml осталась в прежнем виде. обвязка gethtml0 такая же как и gethtml. Что еще найдете, пишите.
Добавил, по желанию трудящихся, функцию strip, для уборки мусора в хтмл.
Code
file$='<SrcDir>parsing[1].txt' shablon$=CHR(9)+CHR(9) oldStr$=StrFromFile(file$,1,-1) PluginSet("PlugIn","shablon$") PluginSet("PlugIn","oldStr$Str$") PluginRun ("PlugIn","strip") PluginGet("PlugIn","retStr$") Message("","retStr$") shablon$=CHR(9) уберет все табы shablon$=CHR(9)+CHR(9) если табов нечетное количество один оставит. аналогично с переводами строк shablon$=CHR(13)+CHR(10) выстроит весь хтмл в одну строку shablon$=CHR(13)+CHR(10) +CHR(13)+CHR(10) уберет только двойные переводы строк, единичные останутся.
Да основное общение идет через личку, отработка доп функций, под конкретную нужду. А новую версию плагина, выкладываю для передачи и на случай что кому нибудь она понадобится в последующем.
Решение метода передачи "Transfer-Encoding: chunked" savebinall сохраняет в указанный файл заголовок с ответом, как бинарный код, в том виде как был получен. Если передавалась строка, то строка и будет в файле, если файл то после заголовка будут бинарные данные файла. Если посылка фрагментирована, то маркеры фрагментов то же будут в файле.
makechunkeds обрабатывает и возвращает как строку данные фрагментированного ответа сервера, результат обработки, так же, остается в плагине, до нового запроса, и используется функцией parserez и иными функциями, выполняется один раз для каждого ответа, если в этом есть нужда.
Code
PluginRun("PlugIn","makechunkeds") Эта команда выполняется если вам вдруг надо поиметь содержимое, без дальнейшей обработки. PluginGet("PlugIn","srez$")
parserez работает аналогично parseotvet, но для внутренней строки полученной ранее с пом. функции makechunkeds, область заголовков не обрабатывается.
getheadername возврашает запрашиваемый заголовок, при выполнении функции makechunkeds, заголовок ответа помещается в список, из которого данная функция выводит строки заголовков, которые начинаются с указанного шаблона: "Transfer-Encoding:" вернет Transfer-Encoding: chunked, аналогично "T" вернет Transfer-Encoding: chunked, а так же все имеющиеся заголовки на чинающиеся на "T". Кукиши находятся в заголовке Set-Cookie:.(для любителей региться)
Варуем варуем.. башка снег попадет.... Сейчас и файлы таскать бум
Serg, Добавил функцию savebin для скачивания файлов, протестируй, я с форматом еще не разобрался, может файл быть на несколько байт больше, из за конечных маркеров, проконтролируй и сообщи. Когда все отработало, сохраняем файл.
Добавлено (27 Март 2010, 20:47) --------------------------------------------- Да там по идее должно быть и имя получаемого файла, бальшой документ RFS 2068, я пока его не прочитал, так что пока думаю не все как нада.
Так если картинка то тупо идут данные после заголовка, имя файла то и знать не надо, ты же его сам запрашиваеш, наверное и другие файлы аналогично. Соответственно поправил плагин, он не додавал 4 байта .
Да, всё ОК, попробовал без внедрения плагина в проект.
Я в основном так и делаю, ибо за час плагин может поменятся не один десяток раз, так что эмбедить задолбешся, но иногда ембежу, что бы выложить, и такие заморочки бывают регулярно, пока не врубишся что плаг не внешний
Добавлено (28 Март 2010, 19:53) --------------------------------------------- Да как то попробуй какой нить бальшой файл, интересно как его там отдают, мож по кускам.
Так, есть событие соответствующее началу приема первой порции ответа, в ней как правило и находится хейдер, в котором заголовок Content-Length указывает длину передаваемых данных. По этому событию можно считать это число, событие будет генерироватся при приходе каждой порции, все что пришло я заганяю в поток, так что можно будет выводить длину данных в потоке, по этому событию. Так как числовая переменная у нас уже занята(тип события) то под вывод можно будет отдать строковую. Надо только будет подумать на кого возложить труд по считыванию длины ответа и вычисление процента. На програмера или на плагин
В заголовке ответа сервера Content-Length: вес скачиваемого файла Ты его уже не раз видел Просто не обращал внимания Тут нада будет подумать, если трансфер хороший то при закачке можно и завесить ммв проект, не будет успевать отрисовывать закачку. Ну посмотрим.
Потом првоерять вес этого же файла на компе и сравнивать (тока нагрузка неслабая наверно будет)
Да нет, никакой загрузки не будет, длина файла записывается при его записи на диск в соответствующее поле справочника, от туда и читается, и сравнение 2х цифр то же мнгновенно.
Вывел хвункцию getotvetlen, ну так, для контроля, потом мож и спрячу Получение процента загрузки происходит в скрипте плагина, в обработчике событий.
Code
If (typ=4) Then mes$='получен ответ' PluginGet("PlugIn","proc$") DisplayValue("procentov","proc$") LoadText("Text","Данные получены") End
Просто считывается сколько процентов загружено. Число с плавающей запятой,в строковом виде. Если нада какой полоса двигать , то переводим в число методами ммв. Протести на больших файлах, не тормозит ли проект.
Версия плагина icq-чат с моего сайта, последняя на данное время. Хостинг уже доступен, но не совсем все включили.
Добавлено (08 Май 2010, 13:38) --------------------------------------------- Описание внутри архива, все вопросы задавать в этой ветке. Есть тоже самое но уже в ехе формате, размер 995кв.
Елки-палки... Я в сетях во общем то мало что понимаю, мой максимум - присвоить IP компьютеру и настроить примитивное соединение... Но вот сейчас я работаю в филиале универа, и есть ряд задумок, качающихся дистанционного образования. Один из вариантов - прямая связь с преподавателем и студентом, когда студент изучает материал из электронного пособия (это наподобие как я тут делал - http://pedsovet.su/load/9-1-0-10398-0-0-0-1308215850 ) и сразу может соединиться с преподавателем, в той же программе. Или что-то врод собственной "аськи" сделать ,но сервер у нас, клиенты тоже с нашими логотипами и дизайном... Но блин, как во всем этом разобраться... Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
Игорь, как то пропустил твой пост, все вполне раелизуемо, так что если захочеш обращайся помогу, можно сделать или по тсп или по пайпу. Для пайпа должна быть локалка, а для тсп любое открытое соединение, хоть через инет.