LiveDC — Быстрый доступ к p2p файлам

    Сегодня существует большое количество DC-клиентов на самый разный вкус. Однако все они наделены существенным недостатком: нужно ждать, пока скачиваемый файл полностью загрузится. А если вы желаете посмотреть фильм или новый эпизод любимого сериала в высоком качестве, то даже при скорости интернета 100 Мбит/с ждать придется довольно долго. Но ведь хочется-то сейчас!




    Актуальность

    Допустим, мы хотим посмотреть фильм. Обычно, для этого его нужно скачать. Но ведь для просмотра нам нужен лишь небольшой конкретный участок файла. Так зачем ждать, пока он загрузится целиком?!

    Так и появился на свет LiveDC. Я постарался убрать все лишнее из процесса потребления контента p2p. Клиент сам выберет куда скачать файл и предоставит к нему доступ так скоро, как это возможно.

    Механизм работы

    Клиент создает в системе виртуальный «жесткий диск», на котором находятся файлы из p2p сети. Это позволяет предоставить доступ к файлу до окончания его загрузки в систему. Приложения и система видят обычный файл, а все запросы к нему проходят через DC клиент. Если данные уже загружены, они передаются в ответ, в противном случае клиент устанавливает высокий приоритет запрошенного сегмента и ожидает, пока тот не будет загружен.

    Тип файла не имеет значения. Например, можно примонтировать образ и начать установку программы или игры, пока он еще загружается.

    За работу с виртуальным диском отвечает библиотека Dokan. Она предоставляет драйвер для файловой системы, а также оболочку для его использования из-под .NET

    Функционал DC представлен моей библиотекой SharpDC. О ней, если будет интересно, смогу рассказать в следующих статьях.

    Интерфейс

    Программа рассчитана на работу с каталогами магнет-ссылок. После запуска программа будет перехватывать ссылки вида magnet: из браузера.

    Как таковой интерфейс клиента практически отсутствует.
    Основное окно появляется при нажатии на пиктограмму в области уведомлений.



    Здесь находятся 3 последних добавленных файла. Кроме того здесь можно перейти в настройки или открыть поиск по хабу. Да, пользователи DropBox заметят кое-что знакомое.

    В LiveDC предусмотрена возможность поиска по хабам. В настоящее время файлы нельзя добавлять в шару, однако скачанные файлы клиент раздавать будет.

    При запуске LiveDC начинает обрабатывать магнет-ссылки и создает виртуальный диск (L:\), где можно найти все файлы, когда-либо открытые через клиент. Три последних файла становятся видны при нажатии на значок программы в области уведомлений.

    После нажатия на магнет-ссылку появляется окно:



    Клиент производит поиск по всем доступным хабам и пытается установить соединения для начала загрузки. Как только загрузка начинается, файл можно открывать.

    В качестве заключения

    Программа написана на C# в Visual Studio 2012.
    Разработка программы ведется в качестве хобби. На данный момент клиент находится в статусе «beta». Так как программа использует драйвер, при возникновении ошибки не исключен BSOD. Cохраняйте важные документы перед использованием.
    Скачать (1,9 Мб)

    Всё, что я хотел сделать «для себя», в программе реализовано. Очень интересно услышать ваше мнение о продукте. Стоит ли развивать LiveDC дальше и «обвешивать» его функциями?
    Метки:
    Поделиться публикацией
    Комментарии 52
    • 0
      Меню в стиле DropBox — реально удобная штука.
      • +10
        Пожелания на развитие: добавить поддержку других платформ (Linux, MacOS, мобильные).
        • 0
          Давайте зеркало для файла! Уже не качает..;)
        • 0
          А не думал присоединиться к какому либо уже имеющемуся проекту? Например FlylinkDC++, полностью открытый проект. Предпросмотр качающихся фильмов уже реализован
          • 0
            Думал, конечно. Более того, долго и упорно развивал FlowLib. Через пару лет пришел к выводу, что будет проще написать свою библиотеку.

            В FlylinkDC, насколько я помню, просмотр реализован специальными программами, которые умеют смотреть битые файлы. Забудьте про перемотку, и из образа программу так не установить. Мое решение более универсальное. На самом деле, главная причина — мне гораздо приятнее разрабатывать на C#.
            • 0
              Если под специальными программа понимается VLC или какой либо другой плеер, то да )) и перемотка в VLC вроде не подводила. И что мешает тоже самое сделать в другом уже существующем проекте? Кстате если реализовано через библиотеку, может подумать как её приладить к другому клиенту.
              • 0
                Разве VLC может перематывать в незагруженную область?
                Ничего не мешает, просто мне это не интересно. У меня уже была своя библиотека, и мне проще доработать именно ее. Кроме того LiveDC очень сильно отличается от клиентов на основе DC++. Совершенно другой интерфейс, автонастройка. Это другое видение. Здесь я контролирую все аспекты и могу сделать что-то новое.

                В свое время я сделал модификацию FlyLink для локальной сети. Пришлось переделать интерфейс, добавить поиск по локальному трекеру. На его базе было бы гораздо труднее реализовать задуманное мной.
                • 0
                  С того времени много чего изменилось. Мы готовы рассмотреть возможность интеграции.
          • 0
            Однако все они наделены существенным недостатком: нужно ждать, пока скачиваемый файл полностью загрузится.

            Greylink и куча клиентов поддерживают предпросмотр сторонними плеерами типа VLC.
            • +1
              Однако монтирование образа и докачка именно тех сегментов, которые нужны программе установке что-то новое.
            • 0
              Интересно сделано. Получается, при высокой скорости интернета мне будет казаться, что все скачано? Поддержка Linux будет?
              • –1
                Там же на C# написано! Какой может быть линукс?
              • +2
                Именно так. Нашел магнет ссылку — нажал — открыл файл.

                Поддержка Linux возможна, зависит от спроса. Голосуйте за второй комментарий :)
                • +3
                  Было бы крайне чудесно иметь Linux-версию! Мой интернет провайдер уже около 1.5 лет разрабатывает подобный клиент для ПК под Windows, но на мой взгляд пока не очень успешно. Как я понял, они замахнулись на мультипротокольный клиент.
                  А такого приложения на Linux очень не хватает.
                  Наверняка на основе вашего проекта кто-то мог бы реализовать дополнение для XBMC или openELEC.
                  • 0
                    Как-то вы опоздали) Аналогичная программа под линукс была выложена на 9 часов раньше вашего коммента.
                    • 0
                      Меня интересует работа с DC++, а там вроде бы пока только торрент, разве нет?
                      • 0
                        Там есть магнет ссылки. В DC++ через магнет ссылки же все распространяется?
                        • +1
                          Магнет ссылки для торрента и DС различаются и не совместимы
                    • 0
                      Библиотека с открытым исходным кодом, если будут желающие ее использовать, я с удовольствием помогу. Linux версия есть в планах: задача в трекере
                • 0
                  uTorrent умеет работать с потоком. Если я хочу посмотреть фильм, то я смотрю его через стандартный клиент без предварительной загрузки файла целиком. Но вы молодец, удачи.
                  • 0
                    µTorrent — не DC++!
                    • 0
                      В DC++ как раз проще, ибо почти всегда он сегменты загружает последовательно.
                  • 0
                    Решил попробовать, но при клике на magnet ссылку ошибка:
                    image
                    • 0
                      написал в ЛС
                      • 0
                        продублирую ответ здесь. LiveDC это DC-клиент. И поддерживает только ссылки с TTH-хешем.

                        Поддержки торрентов пока нет, я попробую ее добавить в следующих версиях.
                      • 0
                        На мой взгляд, торренты удобны тем что информация структурирована и наглядно представлена/проверена на сайтах. В тоже время простая связка utorrent + vlc опровергает утверждение
                        Обычно, для этого его нужно скачать.
                        .
                        • 0
                          А разве в сети мало каталогов с магнетами (dc++)? Особенно внутрисетевых.
                          И поверьте, там тоже информация структурирована и наглядно представлена.
                        • 0
                          Знакомые все лица! Кто не знает, у провайдера GoodLine, пожалуй, самый большой хаб в мире. AllAvtovo и Ozerki вместе не имеют то количество пользователей, сколько внутрисетевой хаб гудлайна.

                          Кстати, DerSpinner, Erty_Hackward, нет планов открыть хаб для не-гудлайновцев?
                          • 0
                            Да не говори, большую часть присутствующих уже в лицо знаю ))
                          • 0
                            Так как программа использует драйвер, при возникновении ошибки не исключен BSOD.

                            расскажите пожалуйста зачем так реализовано, ибо интересно :)
                            • 0
                              Прошу прощения, прочитал как то наискось, пропустил момент с созданием виртуального диска :)
                              • 0
                                Драйвер используется библиотекой Dokan для создания виртуальной файловой системы. Это и позволяет создавать видимость наличия файла в системе. Когда проигрыватель или другой софт обращается к файлу, драйвер переадресует все запросы в LiveDC, что позволяет ему скачать запрашиваемые сегменты в первую очередь. Вот здесь описано подробнее.
                                • 0
                                  А такая схема разве не приводит к «лагам» при работе? Ну т.е. при такой реализации плеер даже не подозревает, что его обманывают, и файл находится на диске не полностью. Соответственно механизм кеширования в плеере работает без расчёта на сеть, и заранее куски не запрашивает.

                                  Или лагов не происходит потому, что скорость доступа в сеть значительно выше скорости, необходимой для воспроизведения, и поэтому данные просто успевают скачиваться в режиме реального времени?
                                  • 0
                                    Клиент пытается скачать весь файл, независимо от того что у него запрашивают. Он лишь загружает нужные приложению сегменты с более высоким приоритетом. Лагов не будет при достаточной скорости загрузки.

                                    Как только был запрошен какой-либо участок файла, клиент будет загружать в первую очередь сегменты следующие за запрошенным, предполагая что они вскоре потребуются.
                                    • 0
                                      Благодарю, именно это я и хотел узнать.
                              • 0
                                Поиск внутри приложения еще не работает?
                                • 0
                                  Сам поиск работает. Не доделан вывод сообщений об ошибках и текущем статусе.
                                • +1
                                  Когда ждать обновленную версию?
                                  • 0
                                    Какой именно функционал вас интересует? Прогнозировать дату в моих условиях практически невозможно. Но, подобные комментарии, показывающие заинтересованность в проекте, определенно мотивируют.
                                    • +1
                                      В первую очередь торренты.
                                      • 0
                                        Я так подозреваю, что механизм он общий для всех (будущих) протоколов?
                                        Я бы хотел видеть широкий спектр:
                                        — ftp
                                        — http(s)
                                        — torrent
                                        — etc

                                        Поддержку прокси (чтобы не использовать встроенную от ослика, а именно свой)

                                        И очень хочется в поиске, в таблице — сортировку по щелчку на шапке.
                                        • 0
                                          При запуске говорит, что версия устарела и предлагает перейти на сайт для загрузки.
                                          При переходе получаю «Сайт находится в разработке».

                                          Где взять новую версию?
                                          • 0
                                            Прошу прощения, думал успею доделать версию с поддержкой торрентов…
                                            Обновил ссылки до 1.0.6.
                                            Прямая ссылка
                                            • 0
                                              Есть ли новости? Когда ожидать торрент?
                                              • 0
                                                Бета тестирование, в принципе, уже можно начинать. Но пока скорость доступа уступает DC. Если интересно попробовать, напишите мне в ЛС.
                                    • 0
                                      Бета с поддержкой торрентов готова. Если кто-то это читает, прошу погонять и написать о результатах :)
                                      http://livedc.april32.com/setup_livedc_torrents.rar
                                      http://livedc.april32.com/setup_livedc_torrents.zip
                                      http://livedc.april32.com/setup_livedc_torrents.exe
                                      • +1
                                        Я думаю, такое нововведение достойно отдельного топика! :)
                                      • +1
                                        Прошел год уже. Как успехи?

                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.