Приручение файлообменных P2P сетей. DC (Dirrect Connect)

    Каждый пользователь пиринговых сетей DC и программ вроде ApexDC, StrongDC вероятно сталкивался с проблемой: Нет возможности просмотреть файл, прежде чем его скачать. И если для картинок и mp3 ситуация еще не очень критична, то для видео дела обстоят уж совсем плохо.

    Проблема:


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

    Задача


    Разработать и реализовать систему, которая бы обеспечивала:
    1) Просмотр видео, музыки, картинок с расшаренного ресурса в DC.
    2) Просмотр файла, начиная с любой позиции (т.е. осуществлять перемотку)


    Решение


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

    Предо мной стояло две основные проблемы:
    1) Получить требуемый фрагмент файла, начиная с любой позиции, не только с начала и до конца.
    2) Скормить получившийся поток байт аудио/видео плееру.

    Первая проблема с успехом решилась после анализа протокола DC, как оказалось он поддерживает такую возможность.
    Для решения второй проблемы, я обратил внимание на чудную возможность некоторых плееров(mplayer, winamp) открывать (и осуществлять перемотку) файлов по HTTP.

    Вот оно, решение!
    Достаточно построить Web-сервер-адаптер протокола DC к протоколу HTTP.

    Что из этого получилось можно оценить тут MediaDC (Прошу учесть, данный сайт как и видео показанное на его страницах, были разработаны с расчетом на конкретную локальную сеть, и не предполагался выход в Internet.

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

    Спустя некоторое время, я обнаружил возможность многих ОС, монтировать WebDAV как локальную файловую систему. Вероятно, это будет следующим шагом в развитии программы.

    Спасибо за внимание.

    p.s. Это мой первый Хабратопик, просьба сильно не пинать :)

    UPD: Обновил версию, добавил сообщение если порт занят. Зеркало сайта mdc.505.ru (лучшего домена пока в распоряжении нет :) )

    Поделиться публикацией

    Комментарии 27

      +2
      Давно мечтал сам написать такое чудо.
      Спасибо, буду советовать все у кого DC.
        +1
        небольшой вопрос: на чем писали, писали с нули или нет. и какие условия исходников — если они есть.
        заранее спасибо за ответ
          +1
          Программа написана на .Net, c нуля.

          Изначально планировал написать расширение к apexdc, но после просмотра его исходников, отказался, решил что написать с нуля будет проще чем интегрироваться в apexdc. (по архитектурным соображениям)

          Исходники есть, могу выложить в public на условии GPL или подобной лицензии.
            0
            будем рады их видеть, посмотреть на первый DC++ на .net изнутри. Ибо такого еще не встречали.
              0
              Не первый, на sourceforge есть несколько проектов
          –1
          жаль, что это stand alone решение, а не развитие одного из самых толковых dc клиентов — Flylink.
          Если бы вы влились с этим аддоном к ним — цены бы не было.
            0
            С Flylink не знаком. Если этот клиент поддерживает плагины, то написание плагина не составит труда.

            Если плагины не поддерживаются, то ситуация очень усложняется, т. к. с выходом каждой новой версии(обновления) Flylink будет необходимо накладывать патч, пересобирать и перевыпускать приложение. (Такой подход был опробован с apexdc но в силу приведенных причин был отброшен)
            0
            Ну, не знаю… Если хочу сделать предпросмотр, просто чуть-чуть закачиваю, а потом смотрю GOM-плеером. Небольших отрезков хватает, чтобы понять, о чём идёт речь.
              0
              Идея отличная. У самого была подобная, но, как обычно бывает, не дошли руки. Хотелось бы увидеть отдельно прослойку (которая на порт 8080 вешается) для того, чтобы можно было настроить работу с любимым DC клиентом :)
                0
                Если я правильно понял, то это легко реализуется:
                В программу встроен веб-сервер. Обратившись по адресу «localhost: установленный порт/номер хаба/ник пользователя/TTH/TTH файла» можно получить поток. Именно такая ссылка дается проигрывателю. Сервер поддерживает HTTP1.1, следовательно через Header Range можно получить нужный фрагмент.
                0
                Сам хотел сделать подобное, но моих знаний в области дотнета никак не хватило. Поддерживает ли плеер просмотр одновременно с нескольких источников, для увеличения скорости и уменьшения нагрузки на сеть? У меня есть много идей по развитию подобного продукта, если заинтересован, аську найдешь в профиле.
                  0
                  В данной просмотр с нескольких источников не рализован. Пока еще в планах.

                  В идеях очень заинтересован
                    0
                    Аську в профайле не нашел. Может и не там смотрел, я недавно на хабре :)
                    Моя: 195 41 28 73
                    0
                    опа! :) ХИРЭ8! Не перевелись таланты :)
                      0
                      Респект!
                      Есть только один момент: 64-битные винды нормально (т. е. как с папкой) с вебдавом не работают. Да и переходить на него нет смысла — тут ведь только чтение идет, запись и прочие операции будут невостребованы.

                      Предлагаю сделать более крутое решение: shell extension + search extension.
                      Уровни вложенности: Сетевое окружение\DC\Хаб\Юзер\Папки\Файлы.
                      Взаимодействие с внешним плеером посредством передачи IDataObject-а.
                      Чат нафиг.
                      Фичи для висты: In-place поиск, In-place просмотр.
                      Работа с удаленными файлами получится почти как с локальными, даже не будет чувствоваться убогость обычных клиентов.
                        0
                        Имхо, очень здравая идея. Так будет легче привлечь и новичков, которые еще не работали с DC.
                        –1
                        а в акадо позавчера как раз DC и прочее закрыли. x(
                          –1
                          С чего ты взял? На «dc.uvao.net:411» сижу без проблем. Я уж не говорю о том, что старые мигтелекомовские хабы не закрывали. Может, по части интенета, акадо и говно, но вот к их ресурсам у меня точно нареканий нет.
                            0
                            я неточно выразился, закрыли ресурсы Акадо-бывш. Crossnet
                          0
                          MediaDC .Net has encountered a problem and needs to close. We are sorry for the inconvenience. =\
                            0
                            случайно вспомнил что у меня в uTorrent WebUI висит на 8080, может как-то поправить чтобы оно ругалось что порт занят, а не просто падало? :)
                              0
                              Поправил. Версию на сайте обновил.
                            0
                            хм...bugreport #2

                            при подключени —
                            <[BOT]Verlihub> Bad nickname: unallowed characters, use these ()-0123456789=@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz{}

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

                                вот версия хаба

                                <[BOT]Verlihub> This Hub Is Running Version 0.9.8d-RC2 (Thursday September 13 2007) of VerliHub
                                  0
                                  Понял в чем проблема.
                                  Программа добавляет префикс [MDC] к любому нику, который вы вводите.
                                  Это сделано для того чтобы программу было легко идентифицировать.

                                  Попробуйте связаться с администратором хаба и попросить добавить в список разрешенных символы [ и ].

                                  Если это не возможно, свяжитесь со мной, обсудим другие варианты.
                                    0
                                    там бесполезно связываться, проще енота научить танцевать чечётку, чем что-то от них добиться

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

                            Самое читаемое