Pull to refresh

Реализованная идея для сетей DirectConnect

Reading time2 min
Views524
Не секрет, что во многих городах есть свои городские локальные сети. Обмен в этих сетях чаще всего происходит по принципу DirectConnect и через программы DC++, StrongDC++, FlyLinkDC++ и т.д.

Поиск файлрв в этих программах происходит в режиме реального времени, т.е. только у тех пользователей, которые подключены в данный момент времени к хабу. А значит такой поиск не полноценен. Плюс ко всему программы не показывают, какие новые файлы появились в сети с момента последнего моего захода на хаб. И это является настоящей проблемой — постоянно приходится прогонять поиск по запросам «avi, mdf, pdf» и т.д. чтобы посмотреть, какие появились новые фильмы, игры, книги… Вообщем головная боль :).

Под катом я предлагаю простое решение данных проблем (так сказать по быстрому и в лоб :)

Рассмотрим принцип работы одной из программ: FlyLinkDC++
Чтобы посмотреть какие файлы есть у конкретного пользователя, мы скачиваем его Список файлов. Этот список есть ничто иное, как обычная XML в архиве формата bz2 и копируется это счастье в папку «C:\Program Files\FlylinkDC++\Settings\FileLists\» (при условии, что программа была установлена с параметрами по умолчанию). Соответственно, получая списки файлов у всех пользователей, все они появляются в папке «FileLists».

А дальше дело техники:
1. Распаковываем файлы
2. Парсим XML в базу данных (поле TTH должно быть уникальным).
3. Пользуемся.

Т.к. одно поле в базе данных уникально (поле TTH — хеш файла), то мы избегаем повторов файлов в базе.
Зная время добавления данных в нашу базу — легко отслеживать появление новых файлов в сети.
Список файлов доступен всегда, даже если конкретный пользователь сейчас отключен от хаба.

Собственными корявыми руками была написана программа (архив 4 Мб. исходник+exe) реализующая эти действия. Сделано все по быстрому. Использовались Visual Basic .Net и в качестве базы — SQLite.

Внешний вид:
image

Сейчас времени доделывать программу нет, поэтому доведение ее до ума только приветствуется!
И не забудьте поделиться доработкой :!)
Tags:
Hubs:
Total votes 9: ↑7 and ↓2+5
Comments14

Articles