Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт ноя 21, 2017 12:10 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 88 сообщений ]  На страницу Пред. 1 2 3 4 5 6 След.
Автор Сообщение
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Чт фев 12, 2009 8:08 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн апр 16, 2007 6:38 pm
Сообщения: 1222
если две проги разом позовут downloader, то в файле /rd/1/.download. будет бред, или результат только одного из запросов?

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Чт фев 12, 2009 9:14 pm 
Не в сети

Зарегистрирован: Ср июн 04, 2008 10:16 pm
Сообщения: 174
Это вопрос скорее к ядерщикам. Файл записывается целиком, за 1 раз, функцией 70/2. Будет ли бред?

В идеале следовало бы передавать файл вызывающей программе через общую память...


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Чт фев 12, 2009 9:40 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн апр 16, 2007 6:38 pm
Сообщения: 1222
да, было бы здорово) например, прога вызывает downloader, передавая идентификатор расшаренной памяти, а downloader просто пишет в нее.. Вернее, два идентификатора, верно? Отдельно для заголовков.. // Хм, а можно еще и третий, с памятью на чтение, с текстом передаваемых заголовков..

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Чт фев 12, 2009 11:36 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
При скачивании http://www.ya.ru и http://www.yandex.ru downloader, хотя и правильно всё скачивает и записывает на диск, но не завершается. (Тут нужно разбираться, может, это следствие общей кривости сетевого стека в ядре. Скажем, три FIN-пакета подряд от ядра серверу без какой-либо реакции сервера меня сильно удивляют.) Если при этом попытаться скачать http://www.wasm.ru, то downloader слетает:
Вложение:
downbug2u.png
downbug2u.png [ 3.99 КБ | 3140 просмотров ]

Вложение:
downbug2k.png
downbug2k.png [ 5.32 КБ | 3140 просмотров ]

При скачивании http://www.wasm.ru (отдельно от первого теста) всё внешне выглядит нормально, программа завершается добровольно, но в /rd/1/.download оказывается фигня, начиная с "tml>" вместо "<html>". На доске отладки видно следующее:
Вложение:
downbug3u.png
downbug3u.png [ 5.06 КБ | 3142 просмотра ]

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Чт фев 12, 2009 11:42 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
И ещё замечание. Сейчас один запрос разбивается на 4 пакета. Каждый пакет размером (в типичном случае) максимум 17 байт оборачивается в tcp/ip/ethernet-фреймы, приводя к передаче дополнительных 54 байт на каждый пакет. Всё это нагружает сеть, доходит до сервера, сервер вынужден для каждого из этих пакетов посылать оповещение, что пакет получен... в общем, куча избыточных байт гуляет по сети. Насколько сложно всё оборачивать в как можно меньшее число пакетов? В типичном случае запрос замечательно умещается в один.

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Сб фев 14, 2009 6:22 pm 
Не в сети

Зарегистрирован: Ср июн 04, 2008 10:16 pm
Сообщения: 174
Цитата:
При скачивании http://www.ya.ru и http://www.yandex.ru downloader, хотя и правильно всё скачивает и записывает на диск, но не завершается.

Не удалось воспроизвести. У меня скачивает, записывает и завершается.
Цитата:
"tml>" вместо "<html>"

Исправил.

Запрос теперь отправляется за один раз (сделал буфер и составляю запрос в нем).

Пока не стал делать обмен через общую память, поскольку в перспективе downloader превратится в библиотеку и тогда вся память и так будет общей. Пока все работает через "/rd/1/.download".


Вложения:
downloader-0.84.7z [11.92 КБ]
114 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Вс фев 15, 2009 1:22 am 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Ага, уже лучше. Ещё замечания:
1. Иногда страница не докачивается - вместо последнего пакета записываются нули. Иногда докачивается.
2. Программа отжирает всё доступное процессорное время на пустые проверки, не пришло ли чего.
3. При запуске из командной строки всё работает (по модулю первых двух примечаний). При запуске через GUI на wasm.ru вылетает.

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Чт сен 03, 2009 2:25 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1600
Тема заглохла или только кажется?
В соседних темах просили поддержку прокси "с логином и паролем которые", я добавила в последнюю версию с исходниками работу через прокси, прошу потестировать и оценить.
Вроде сказано, что "в перспективе downloader превратится в библиотеку" - над этим идёт работа или нет? Я старалась изменять как можно меньше, чтобы меньше проблем могло возникнуть при портировании изменений, если есть куда. Вообще здесь есть что менять, поэтому нельзя ли выложить самую текущую версию, если такая есть, чтобы я могла развивать, не теряя уже проделанных другими изменений?
Настройки прокси мой вариант считывает из файла конфигурации, я выбрала /sys/network/zeroconf.ini, потому что в этом файле уже хранятся некоторые настройки сети и, кажется, есть смысл хранить другие настройки сети в том же месте. Может быть, стоит переименовать его в network.ini?
Пример файла с настройками:
Код:
[ipconfig]
; type should be static or zeroconf
; zeroconf means the service first tries to contact a DHCP server
; If dhcp is not available, it switches to link-local
type    = static
ip      = 192.168.0.2
gateway = 192.168.0.1
dns     = 192.168.0.1
subnet  = 255.255.255.0

[proxy]
proxy   = 192.168.0.1
port    = 3128
;user    = proxytest
;password= proxytest

Новые параметры я считываю из секции proxy. Параметр proxy задаёт адрес прокси и может быть ip-адресом или доменным именем, port - порт прокси. Для прокси с авторизацией есть два параметра user и password, если их нет, то программа считает, что авторизация не нужна.


Вложения:
Комментарий к файлу: Исходные тексты.
downloader-src.7z [15.38 КБ]
97 скачиваний
Комментарий к файлу: Скомпилированная программа.
downloader-bin.7z [3.28 КБ]
86 скачиваний

_________________
Сделаем мир лучше!
Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Чт сен 03, 2009 3:33 pm 
Не в сети

Зарегистрирован: Вс ноя 04, 2007 2:46 am
Сообщения: 390
В нашем полку появилась КолибриВумен? Круто =) Респект.
Протестировал, у меня работает.


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Пт сен 04, 2009 2:40 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт мар 01, 2007 7:57 pm
Сообщения: 834
CleverMouse, исходники должны быть на SVN, если не ошибаюсь. А за аккаунтом для SVN обратитесь к mike.dld.
К сожалению, протестировать не могу, так как у меня в Колибри сеть вообще не работает. Во всяком случае, респект))

_________________
Всех выше те, кто доброе творят,
И за дела добра не ждут наград,
Всем жертвуют для страждущих людей,
Не думая о выгоде своей.


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Сб сен 05, 2009 7:24 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1600
Атауальпа, спасибо, конечно, за желание помочь, но "иногда лучше жевать, чем говорить". Достаточно небольшого изучения происходящего в Колибри, чтобы понять: обо всём или почти обо всём говорят на этом форуме. Второй по значимости ресурс - SVN, и обо всех изменениях там говорят тут за очень редкими исключениями. Для того, чтобы смотреть, что есть в репозитории, вовсе не нужен аккаунт. Я проверила содержимое репозитория перед тем, как задавать вопрос, - downloader там отсутствует.

Вопрос всем. Я подумала над созданием библиотеки для работы с сетью. Кажется, нормальная реализация совершенно стандартных функций типа gethostbyname, которые должны послать запрос и ждать ответа, невозможна. Потому что пробуждают поток при получении пакета функции работы с событиями, следовательно, функция должна уметь обрабатывать и остальные события, а это не в её компетенции. Я хочу запрещать остальные события внутри функции, но тогда в конце функции придётся восстанавливать маску событий, а сейчас нет API ядра для получения текущей маски. Поэтому вопрос: нет возражений против того, чтобы системная функция 40, которая сейчас ничего не возвращает, вместе с установкой маски возвращала бы предыдущую маску? Вроде ни на какие существующие программы это повлиять не должно.

И ещё один вопрос. При открытии соединения нужно указывать локальный порт. Если конкретное значение неважно, приходится организовывать перебор. Это несколько неудобно. Нет возражений против того, чтобы разрешить нуль для значения локального порта, чтобы ядро выбрало значение на своё усмотрение?

Я знаю, как на этом форуме относятся к тем, кто высказывает пожелания, но не делает ничего для их осуществления. Поэтому уточняю: я не прошу кого-то заниматься реализацией моих предложений, я собираюсь делать это сама.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Сб сен 05, 2009 10:22 pm 
CleverMouse
Цитата:
Поэтому вопрос: нет возражений против того, чтобы системная функция 40, которая сейчас ничего не возвращает, вместе с установкой маски возвращала бы предыдущую маску? Вроде ни на какие существующие программы это повлиять не должно.

А может все-таки ввести функцию возвращающую маску? А то вдруг коллизии какие объявятся, все-таки многие программы используют 40-ю функцию.
Цитата:
Нет возражений против того, чтобы разрешить нуль для значения локального порта, чтобы ядро выбрало значение на своё усмотрение?

Если 0 никем не используется, то почему бы и нет.
Цитата:
я собираюсь делать это сама.

Замечательно! Респекты буду писать по мере реализации.
Судя по уже сделанному - ты серьезный человек.


Вернуться к началу
   
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Сб сен 05, 2009 11:29 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
CleverMouse писал(а):
Вроде ни на какие существующие программы это повлиять не должно.

Теоретически это изменение может привести к расхождению, но практически никому этот eax=40 после вызова сисфункции не нужен. Пошарил по исходникам - 40-ю функцию действительно использует куча приложений (это, впрочем, было и так понятно), но ни одному не нужно значение eax после её вызова. Так что думаю, ни к чему плодить лишние сисфункции.
CleverMouse писал(а):
Если конкретное значение неважно, приходится организовывать перебор. Это несколько неудобно.

... и запросто может привести к проблемам синхронизации, когда приложения A и B одновременно пытаются открыть соединение, A нашло свободный порт, тут произошло прерывание, B нашло этот же порт и открыло, и когда управление вернулось A, ни о чём не подозревающее A попытается использовать уже ставший занятым порт и сильно офигеет, когда это не получится. При реализации поиска в ядре можно хоть синхронизацию поставить. Кстати, в текущей реализации сетевой подсистемы вообще с блокировками напряг. И вообще там всё переписывать надо.

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Вс сен 06, 2009 12:09 am 
CleverMouse писал(а):
чтобы ядро выбрало значение на своё усмотрение?

diamond писал(а):
При реализации поиска в ядре можно хоть синхронизацию поставить

Это меня глючит или два человеа действительно сказали одно и тоже, но при этом как бы кто-то комуто возражает и поправляет?...


Вернуться к началу
   
 Заголовок сообщения: Re: http качалка
СообщениеДобавлено: Вс сен 06, 2009 12:59 am 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Цитата:
Это меня глючит или два человеа действительно сказали одно и тоже, но при этом как бы кто-то комуто возражает и поправляет?...

Не совсем, мой пост был дополнением (если угодно, поправкой), но я тоже за добавление такой возможности.

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 88 сообщений ]  На страницу Пред. 1 2 3 4 5 6 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB