Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Jul 12, 2020 9:02 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 91 posts ]  Go to page Previous 1 2 3 4 57 Next
Author Message
 Post subject: Re: http качалка
PostPosted: Thu Feb 12, 2009 8:08 pm 
Offline
User avatar

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Thu Feb 12, 2009 9:14 pm 
Offline

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Thu Feb 12, 2009 9:40 pm 
Offline
User avatar

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Thu Feb 12, 2009 11:36 pm 
Offline
Kernel Developer
User avatar

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

Attachment:
downbug2k.png
downbug2k.png [ 5.32 KiB | Viewed 5406 times ]

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Thu Feb 12, 2009 11:42 pm 
Offline
Kernel Developer
User avatar

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Sat Feb 14, 2009 6:22 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Quote:
При скачивании http://www.ya.ru и http://www.yandex.ru downloader, хотя и правильно всё скачивает и записывает на диск, но не завершается.

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

Исправил.

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

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


Attachments:
downloader-0.84.7z [11.92 KiB]
Downloaded 188 times
Top
   
 Post subject: Re: http качалка
PostPosted: Sun Feb 15, 2009 1:22 am 
Offline
Kernel Developer
User avatar

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Thu Sep 03, 2009 2:25 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1624
Тема заглохла или только кажется?
В соседних темах просили поддержку прокси "с логином и паролем которые", я добавила в последнюю версию с исходниками работу через прокси, прошу потестировать и оценить.
Вроде сказано, что "в перспективе downloader превратится в библиотеку" - над этим идёт работа или нет? Я старалась изменять как можно меньше, чтобы меньше проблем могло возникнуть при портировании изменений, если есть куда. Вообще здесь есть что менять, поэтому нельзя ли выложить самую текущую версию, если такая есть, чтобы я могла развивать, не теряя уже проделанных другими изменений?
Настройки прокси мой вариант считывает из файла конфигурации, я выбрала /sys/network/zeroconf.ini, потому что в этом файле уже хранятся некоторые настройки сети и, кажется, есть смысл хранить другие настройки сети в том же месте. Может быть, стоит переименовать его в network.ini?
Пример файла с настройками:
Code:
[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, если их нет, то программа считает, что авторизация не нужна.


Attachments:
File comment: Исходные тексты.
downloader-src.7z [15.38 KiB]
Downloaded 174 times
File comment: Скомпилированная программа.
downloader-bin.7z [3.28 KiB]
Downloaded 158 times

_________________
Сделаем мир лучше!
Top
   
 Post subject: Re: http качалка
PostPosted: Thu Sep 03, 2009 3:33 pm 
Offline

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


Top
   
 Post subject: Re: http качалка
PostPosted: Fri Sep 04, 2009 2:40 pm 
Offline
User avatar

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Sat Sep 05, 2009 7:24 pm 
Offline
Kernel Developer
User avatar

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

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

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

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

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


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

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

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Sat Sep 05, 2009 11:29 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
CleverMouse wrote:
Вроде ни на какие существующие программы это повлиять не должно.

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

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Sun Sep 06, 2009 12:09 am 
CleverMouse wrote:
чтобы ядро выбрало значение на своё усмотрение?

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

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


Top
   
 Post subject: Re: http качалка
PostPosted: Sun Sep 06, 2009 12:59 am 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
Quote:
Это меня глючит или два человеа действительно сказали одно и тоже, но при этом как бы кто-то комуто возражает и поправляет?...

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

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 91 posts ]  Go to page Previous 1 2 3 4 57 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited